jval Posted February 17, 2022 On 2/15/2022 at 2:25 PM, GRAU said: Hi, Jval! I got a new old issue with palete - the sprite itself is a 32bit png, and unless there are no changes to player subcolormap - all looks good. But when i get the hazmat suit and colormap shifts to the green one - i see really lots of problems with additive 32bit sprites comming: Hazmat suit on - looks like the sprite of plasma is rendered using OLD original dooms colormap but with RDDVOX PALETE - that is why this appears, i think: And here the HAZMAT has worn off, and regular colormap from RDVOX is used again. Sorry for taking a bit to replay, I'm very busy these days.... The problem appears only in 8 bit mode, not in 32 bit color. Solution and work-around: The transparency tables for sprites in 8 bit color are calculated depending on the first palette, not for the additional palettes, or additional gamma corrections. This technique works fine with the build in palette, or any palette, that it has got "linear" differences with each other. Where the problem occurs: The precalculated transparency tables hold information like: if we apply a transformation between color index C1 (background) with color index C2 (sprite) and alpha value A what color index do we get? (Transformation stands for a function, like add or subtract or translucency) Now, in Doom palette, the calculation result if the same for the same C1, C2 & A, regardless the palette index you're using (blood, rad suit, etc). This does not apply to some of RDDVOX's palette indexes. I've created a new palette using a tool I've developed some time ago, and works fine, you can try it if you like: DOOMPAL3.zip Screenshot of the new palette without the problem (this is a pre.2.0.7 version, but it will work the same with the latest official 2.0.6, or any of the latest WIP versions): Spoiler Now, if the new palette does not fit, we can discuss other options. 1 Quote Share this post Link to post
GRAU Posted February 19, 2022 (edited) well, that is not the thing i expected to hear, but i will try your palete and compare it tio my own - interesting what actualy had changed But for me the better sollution would be to change a bit the logic of radsuit. for example to calculate the picture under radsuit in 32bit and then - convert the result back into paleted color. Actually this effect appears only on radsuin and item pickup moments, but the blue colors become broken those moments. Another question - do i need colormap at all for delphidoom? do i need to generate damage effect subtables? Edited February 19, 2022 by GRAU 1 Quote Share this post Link to post
Gez Posted February 19, 2022 On mardi 15 février 2022 at 1:25 PM, GRAU said: Hi, Jval! I got a new old issue with palete - the sprite itself is a 32bit png, and unless there are no changes to player subcolormap - all looks good. But when i get the hazmat suit and colormap shifts to the green one - i see really lots of problems with additive 32bit sprites comming: Hazmat suit on - looks like the sprite of plasma is rendered using OLD original dooms colormap but with RDDVOX PALETE - that is why this appears, i think: 1 hour ago, GRAU said: But for me the better sollution would be to change a bit the logic of radsuit. for example to calculate the picture under radsuit in 32bit and then - convert the result back into paleted color. Actually this effect appears only on radsuin and item pickup moments, but the blue colors become broken those moments. Just to clarify things: the radsuit effect is not a colormap. Colormap is used only for light levels and invincibility. Instead, the greenish tint from the radsuit is achieved with a palette swap. The PLAYPAL lump does not contain just one palette, it contains a whole 14 distinct palettes. The first palette is the base palette, but then you have progressively redder palettes (used for when you take damage and the screen flashes red, as well as for the berserk effect), progressively yellower palettes (used for when you pick up items and the screen flashes gold), and a greenish palette for when wearing the radsuit. 2 Quote Share this post Link to post
jval Posted February 19, 2022 2 hours ago, GRAU said: But for me the better sollution would be to change a bit the logic of radsuit. for example to calculate the picture under radsuit in 32bit and then - convert the result back into paleted color. No, it will be catastrophic for the CPU to make all calculations in 32 bit and then make more calculations to change back to 8 bit. 2 hours ago, GRAU said: Actually this effect appears only on radsuin and item pickup moments, but the blue colors become broken those moments. These are the palettes with the problem I described. 2 hours ago, GRAU said: Another question - do i need colormap at all for delphidoom? do i need to generate damage effect subtables? Probably the OpenGL could work without them, since all the color change effects are emulated, but there are some rare cases they are used (eg in the console). But you need them in software mode, even some (pre-)calculated tables are limited to the first palette only, or in some cases in 32 bit, the effects are calculated algorithmically. On the other hand, I can provide mechanics to generate them at runtime, it won't be a problem. 0 Quote Share this post Link to post
GRAU Posted February 20, 2022 19 hours ago, jval said: No, it will be catastrophic for the CPU to make all calculations in 32 bit and then make more calculations to change back to 8 bit. These are the palettes with the problem I described. Probably the OpenGL could work without them, since all the color change effects are emulated, but there are some rare cases they are used (eg in the console). But you need them in software mode, even some (pre-)calculated tables are limited to the first palette only, or in some cases in 32 bit, the effects are calculated algorithmically. On the other hand, I can provide mechanics to generate them at runtime, it won't be a problem. No i don't think it is really needed. But i am interested - what actually changed in that "doompal3.pal"? I compared the colors in main table and found no differences in blue or any others. Did you generated some extra tables or what? please tell me that so i could make those things in right way too. And yes - the pal works fine, that looks enough. As for subtable auto generating on launch - i think it will take extra few seconds of launchtime - from one side, and disable some colormap tricks - from other, so better dont waste time for subtable autogeneration, please. The modder who wants custom tables could use your utility - actually where can i get that? 1 Quote Share this post Link to post
jval Posted February 20, 2022 3 hours ago, GRAU said: No i don't think it is really needed. But i am interested - what actually changed in that "doompal3.pal"? I compared the colors in main table and found no differences in blue or any others. Did you generated some extra tables or what? please tell me that so i could make those things in right way too. I used the first palette and I generated the other palettes and the colormap using the algorithm described at the wiki. I didn't generate any extra tables. 3 hours ago, GRAU said: And yes - the pal works fine, that looks enough. Nice! 3 hours ago, GRAU said: As for subtable auto generating on launch - i think it will take extra few seconds of launchtime - from one side, and disable some colormap tricks - from other, so better dont waste time for subtable autogeneration, please. Too late :) , already done :D It's a directive to the global text preprocessor for text defined content, and can be placed almost anywhere (VOXELDEF, ACTORDEF, LIGHTDEF, etc) Just start a line with #CREATEPALETTE and optionally provide the base palette lump (if you don't want to use the PLAYPAL as base palette). 3 hours ago, GRAU said: The modder who wants custom tables could use your utility - actually where can i get that? The utility is based on dcolors.c of the Doom Utilities, with a fix for Carmack's typo, and an option to support the 28 palettes of Hexen. The user interface is very basic to make it public, but I hope I'll find some time to fix this soon. 0 Quote Share this post Link to post
jval Posted March 2, 2022 (edited) After 4 months of intense development I'm proudly presenting you DelphiDoom ver. 2.0.7! This is one of the most important releases in the 17+ years history of DelphiDoom's development, which will define the future of my flagship source port. Downloads: DelphiDoom - delphi-doom-2.0.7.730-win32.zip DelphiHeretic - delphi-heretic-2.0.7.730-win32.zip DelphiHexen - delphi-hexen-2.0.7.730-win32.zip DelphiStrife - delphi-strife-2.0.7.730-win32.zip DD-IDE tool - dd-ide-2.0.7.730-win32.zip Launcher - dd-launcher-2.0.7.730-win32.zip ACS Script Compiler - accp_1.10_bin.zip Source code - delphi-doom-src-2.0.7.730.zip Major new features: Official UDMF support, a feature that actually had been left unfinished for more than 6 years, since ver. 1.1.600 (31 Dec, 2015). Polyobjects in all branches. ACS script (compiled or plain source) in all branches with a new ACS command line compiler tool based on Hexen's ACC compiler 1.10 by Ben Gokey. Full UMAPINFO support for Doom and Heretic branches (with some small extensions/additions), limited support for Strife branch. Full MBF21 support for Doom branch, good support with some missing features for Heretic, Hexen & Strife branches. The software renderer casts dynamic lights to sprites, voxels and masked middle textures. Crouching in all branches. Fog sectors in all branches. Crosshair in all branches. Support for 426x200 widescreen assets of Unity Doom source port. (You must use the Unity Port IWAD). WAV, OGG, FLAC, OGA, AU, VOC & SND sound files can be loaded directly from PK3 files without the need for a WAD equivalent. XMI (Extended midi), CMF (Creative music file) & SOP (Sopepos) music support. Individual upper, lower and middle texture offsets for sidedefs. Simple dialogs for Doom, Heretic and Hexen (without the full mechanics of Strife branch). Added support for Mars3D in DelphiDoom script IDE (DD-IDE tool). Corrections and fixes: Corrected some Midi playback issues. Now when restarting the midi avoids the corruption that rarely occured in some midi streams. Fixed uncapped framerate bug for floor & ceiling offsets. Fixed glitch in large flats multithreading software rendering. Fix gravity field inheritance in ACTORDEF declarations. Auto fix interpolation for instant changes in sectors heights and texture offsets. (https://www.doomworld.com/forum/topic/110185-eternity-uncapped-framerate-issue) Fixed some glitches in voxel software rendering. Fixed masked middle texture bleeding when player was exactly placed on the line. New Editing Examples: Doom simple dialog: v2_EXAMPLE_19_SIMPLE_DIALOGS.zip Doom polyobjects: v2_EXAMPLE_20_POLYOBJECTS.zip Doom ACS script: v2_EXAMPLE_21_ACSSCRIPT.zip Configurations files for DoomBuilder: DoomBuilder_Configuration_v2.0.7.zip Complete change log for Doom branch (Warning, more than 300 lines of text in spoiler) Spoiler Fixed flags in A_ChangeVelocity() ACTORDEF function. Export info tables to Pascal. Added ExportInfoPascal, InfoExportPascal, ExportInfoPascalBI, InfoExportPascalBI, ExportInfoPascalBuiltIn & InfoExportPascalBuiltIn console commands. Added SaveInfoPascal, InfoSavePascal, SaveInfoPascalBI, InfoSavePascalBI, SaveInfoPascalBuiltIn & InfoSavePascalBuiltIn console commands. Added MF3_EX_ABSOLUTEDAMAGE mobj flag. Added MF3_EX_NOGRAVITYDEATH mobj flag. When set, does not remove the MF_NOGRAVITY flag on death. Fixed MF2_EX_CANTLEAVEFLOORPIC flag behaviour. Removed generalized sector consts for forcefields. Fixed uncapped framerate bug for floor & ceiling offsets. Added "A_PlayerHurtExplode(damage: integer; radius: integer);" ACTORDEF function. Added A_SetPushable() & A_UnSetPushable() ACTORDEF functions. DEHACHED can use weapon & ammo mnemonic names. ACTORDEF can override the existing weapons (WEAPON keyword). Added DEH_PrintWeapondef & PrintWeapondef console commands, print current weapons as ACTORDEF script. Added DEH_SaveWeapondef & SaveWeapondef console commands, save current weapons as ACTORDEF script. Hold attack state for weapon refire. Corrected ACTORDEF parsing of "goto" keyword at the end of the actor/weapon declaration. Added MF3_EX_FREEZEDAMAGE & MF3_EX_NOFREEZEDAMAGE mobj flags. Added MF3_EX_FREEZEDAMAGERESIST mobj flag. When true it takes half damage from MF3_EX_FREEZEDAMAGE missiles. Added MF3_EX_FLAMEDAMAGE, MF3_EX_NOFLAMEDAMAGE & MF4_EX_FLAMEDAMAGERESIST mobj flags. Added MF4_EX_THRUMONSTERS flag, does not collide with monsters. Player crouching. Key bindings menu now has 3 submenus. Variable mobj painchance. Added A_SetPainChance() ACTORDEF function. Added GetActorPainChance() & SetActorPainChance() PascalScript functions. ACTORDEF does not require the "Stop" keyword in states. Can use SKY1 texture on other episodes if SKY2, SKY3 etc not found. Added the TICRATE const in states parameters evaluation. Added the LEVELTIME, GAMEEPISODE, GAMEMAP & LEVELNAME variables in states parameters evaluation. Fixed glitch in large flats multithreading software rendering. Fog sectors (lightlevel > 1000). Fog strength can be configured individually for normal & white fog sectors (OpenGL). Added GetSectorInterpolate() & SetSectorInterpolate() PascalScript functions. Added GetSectorFog() & SetSectorFog() PascalScript functions. Added ::fog property in sector class. Fixed Integer/float tolerance examines negative values in DEHACKED & ACTORDEF. SpriteDX & SpriteDY mobj fields. Can be accessed by ACTORDEF & PascalScript. Added A_SetSpriteDX & A_SetSpriteDY ACTORDEF function. ::spriteDX & ::spriteDY fields are available in ACTORDEF function parameters evaluation. Added GetActorSpriteDX, SetActorSpriteDX, GetActorSpriteDY, SetActorSpriteDY, GetMobjInfoSpriteDX & GetMobjInfoSpriteDY Pascalscript functions. Added ExportInfoPascalConstBI, InfoExportPascalConstBI, SaveInfoPascalConstBI, InfoSavePascalConstBI console commands. Save mobjinfo as Pascal const declaration. Added ExportInfoPascalConst, InfoExportPascalConst, SaveInfoPascalConst, InfoSavePascalConst console commands. Save mobjinfo as Pascal const declaration. Bug fix: Reset extra player fields when spawning player. Added SXF_DROPPED/SIXF_DROPPED flag in A_SpawnItemXX ACTORDEF functions. Mark spawned items as MF_DROPPED. Improved hash efficiency for string evaluation in ACTORDEF function parameters. Fixed behavior of A_CountdownArg() ACTORDEF function. Added MF4_EX_ABSOLUTEDROPITEMPOS mobj flag. Spawns dropped item in actual z of the actor. ACTORDEF can accept boolean values in quotes. Added ACTORDEF functions to play predefined sounds: -A_SeeSound -A_PainSound -A_AttackSound -A_MeleeSound -A_DeathSound -A_ActiveSound Distinct screenshot filenames for Chex Quest & Hacx. Accurate MF3_EX_WALLBOUNCE mechanics. Added "A_MatchTargetZ(zspeed: integer; threshold: integer; maxmomz: integer)" ACTORDEF function. Added DEH_PrintStateOwners, PrintStateOwners, DEH_SaveStateOwners & SaveStateOwners console commands. Fixed bug that could rarely cause infinite loop in DEHACKED lumps, also now recognizes correctly multiple SUBMITNEWFRAMES commands in DEHACKED. Inherited actors do not hurt each other. Green & blood color gibs. r_fakecontrast console variable will add contrast to ALL perpendicular lines. Added A_SimpleDialog(dialoglump1: string; dialoglump2..) ACTORDEF function. Display correctly character #0 in end text. Safe check for light columns in software rendering. The "gameskill" can be accessed by ACTORDEF parameters evaluation. Added check for vanilla E2M7 linedef flags. Use the native monitor resolution as default in software rendering mode. Faster and safer thread de-allocation. Added A_TurretChase() ACTORDEF function. Display items with various colors in automap cheat. Display a crosshair. Can be turned on/off by the "drawcrosshair" console variable. Fixed MF3_EX_NOBLOCKMONST flag behavior. Fix gravity field inheritance in ACTORDEF declarations. Added MF4_EX_CANNOTSTEP flag, actors with this flag can not step-up. String evaluation in parameters of ACTORDEF functions. Added MF4_EX_CANNOTDROPOFF flag, actors with this flag can not drop-off. Use sound files in pk3 without WAD equivalent. Supported file formats are WAV, OGG, FLAC, OGA, AU, VOC & SND. Speed optimizations to DD_IDE tool. Infinite state cycle error message will display the actor's name. Software rendering lights affect masked, sprites and voxels. Master and tracer custom parameters are accessible by ACTORDEF functions. MASTERCUSTOMPARAM(), MASTERPARAM(), TRACERCUSTOMPARAM() & TRACERPARAM() Force string evaluation in ACTORDEF function parameters with the EVAL function. Added ACTORDEF functions: -A_SetMasterCustomParam(param: string, value: integer) -A_AddMasterCustomParam(param: string, value: integer) -A_SubtractMasterCustomParam(param: string, value: integer) -A_JumpIfMasterCustomParam(param: string, value: integer, offset: integer) -A_JumpIfMasterCustomParamLess(param: string, value: integer, offset: integer) -A_JumpIfMasterCustomParamGreater(param: string, value: integer, offset: integer) -A_GoToIfMasterCustomParam(param: string, value: integer, state: state_t) -A_GoToIfMasterCustomParamLess(param: string, value: integer, state: state_t) -A_GoToIfMasterCustomParamGreater(param: string, value: integer, state: state_t) -A_SetTracerCustomParam(param: string, value: integer) -A_AddTracerCustomParam(param: string, value: integer) -A_SubtractTracerCustomParam(param: string, value: integer) -A_JumpIfTracerCustomParam(param: string, value: integer, offset: integer) -A_JumpIfTracerCustomParamLess(param: string, value: integer, offset: integer) -A_JumpIfTracerCustomParamGreater(param: string, value: integer, offset: integer) -A_GoToIfTracerCustomParam(param: string, value: integer, state: state_t) -A_GoToIfTracerCustomParamLess(param: string, value: integer, state: state_t) -A_GoToIfTracerCustomParamGreater(param: string, value: integer, state: state_t) Evalueate actor flags in ACTORDEF functions parameters with the FLAG() function. A_JumpXXXX() ACTORDEF functions will recognize the RANDOM keyword for setting offset. Actor evaluator can access player's mobj in weapon functions. Ensure that the sprite names that are overwritten by the "TEXT" dehacked keyword are in uppercase. Fixed angle field (#8) in A_SpawnItemEx(), also the field can be a floating point value. Warning message in state parameters check displays actor message. Added MF4_EX_FORCERADIUSDMG mobj flag. When set the bomb hurts actors with the MF_EX_NORADIUSDMG flag. Added MF4_EX_SHORTMRANGE mobj flag. When set the actor does not fire missile in distance greater than 14 * 64 map units. Added MF4_EX_DMGIGNORED mobj flag. When set the other actors ignore its attacks. Added MF4_EX_HIGHERMPROB mobj flag. When set the actor has higher missile attack probability. Added MF4_EX_RANGEHALF mobj flag. When set the actor use half distance for missile attack probability. Added MF4_EX_NOTHRESHOLD mobj flag. When set the actor can target other actors without checking threshold. Added MF4_EX_LONGMELEERANGE mobj flag. When set the actor has long melee range. Added MF4_EX_RIP mobj flag. When set the projectile rips through targets. Parse [SPRITES] DEHACKED/BEX extention. Added MF4_EX_MAP07BOSS1 & MF4_EX_MAP07BOSS2 mobj flags. Dynamic ceiling slope check correction. 3D floor logic corrections. Auto fix interpolation for instant changes in sectors heights and texture offsets. Added MF4_EX_E1M8BOSS, MF4_EX_E2M8BOSS, MF4_EX_E3M8BOSS, MF4_EX_E4M6BOSS & MF4_EX_E4M8BOSS mobj flags. Read the NOCLIPPING line flag in UDMF maps. Speed optimizations to the software rendering lights. Added MF4_EX_SELFAPPLYINGLIGHT flag. When set, the lightmap in software rendering mode will apply the light to the emitter. Added r_lightmaponemitters console variable. When set, the lightmap in software rendering mode will always the light to the emitter. Added A_RipSound() & A_RandomoRipSound() ACTORDEF functions. Added MF4_EX_FULLVOLRIP & MF4_EX_RANDOMRIPSOUND mobj flags. Added full_sounds console variable. When true, the mobjs will finish their sounds when removed. Added MF4_EX_ALWAYSFINISHSOUND & MF4_EX_NEVERFINISHSOUND mobj flags to overwrite the full_sounds console variable. Always check the actor's instance flags, not its info flags. Corrected software rendering lights clipping in 3d floors. Added A_ChangeSpriteFlip(propability: integer) ACTORDEF function. Infinite state cycle detection while moving player sprites. Infightining group and mechanics. Projectile group and mechanics. Splash group and mechanics. Added A_SpawnObject() ACTORDEF function (mbf21). Added A_MonsterProjectile() ACTORDEF function (mbf21). Added A_MonsterBulletAttack() ACTORDEF function (mbf21). Added A_MonsterMeleeAttack() ACTORDEF function (mbf21). Added A_RadiusDamage() ACTORDEF function (mbf21). Added A_HealChase() ACTORDEF function (mbf21). Added A_SeekTracer() ACTORDEF function (mbf21). Added A_FindTracer() ACTORDEF function (mbf21). Added A_ClearTracer() ACTORDEF function (mbf21). Added A_JumpIfHealthBelow() ACTORDEF function (mbf21). Added A_JumpIfTargetInSight() ACTORDEF function (mbf21). Added A_JumpIfTargetCloser() ACTORDEF function (mbf21). Added A_JumpIfTracerInSight() ACTORDEF function (mbf21). Added A_JumpIfTracerCloserMBF21() ACTORDEF function (mbf21). More persistent check while trying to adjust missing textures. Added A_JumpIfFlagsSet() ACTORDEF function (mbf21). Added A_AddFlags() ACTORDEF function (mbf21). Added A_RemoveFlags() ACTORDEF function (mbf21). Added A_WeaponProjectile() ACTORDEF function (mbf21). Added A_WeaponBulletAttack() ACTORDEF function (mbf21). Added A_WeaponMeleeAttack() ACTORDEF function (mbf21). Added A_WeaponSound() ACTORDEF function (mbf21). Added A_WeaponAlert() ACTORDEF function (mbf21). Added A_WeaponJump() ACTORDEF function (mbf21). Added A_ConsumeAmmo() ACTORDEF function (mbf21). Added A_CheckAmmo() ACTORDEF function (mbf21). Added A_RefireTo() ACTORDEF function (mbf21). Added A_GunFlashTo() ACTORDEF function (mbf21). Correctly initialize DEHEXTRA sounds. Export ammo tokens in DEHACKED. Use player mobjinfo meleerange field to determine player's melee range. MF3_EX_NOCRUSH flag will set invulnerable an actor on crushing. Don't gib in Chex Quest. Added crush state for mobjs. Added MF4_EX_DONTGIB mobj flag. Actors with this flag will not gib. Fixed some glitches in voxel software rendering. Support for the wait keyword in ACTORDEF. Display warning message when a pk3 file can not be loaded. DEATH_MASK for alternate damage to sectors (mbf21). KILL_MONSTERS_MASK for mobj damage to sectors (mbf21). Added line specials 1024, 1025 & 1026 (mbf21). "ACTIVE SOUND" alias for "ACTION SOUND" DEHACKED field. Fixed the MF2_EX_DONTRUNSCRIPTS flag in actors. Optionally can draw the player's trace in automap. Added MF4_EX_BACKINGMELEE flag. When set the actor will backup from melee attack. Added A_SetProjectileGroup(group: string) ACTORDEF function. Added A_SetInfightingGroup(group: string) ACTORDEF function. Added A_SetSplashGroup(group: string) ACTORDEF function. Accept DEH_ACTOR_xxx as a vaild actor alias. Support for multipatch tall textures. Allow CRxxxxxx colorregions outside CR_START, CR_END namespace. "RADIUS" alias for "WIDTH" DEHACKED field. Added CR_BLACK, CR_PURPL & CR_WHITE translation tables. Blood color support (mbf21 specs). Translation tables for things. Added A_Delayfire(tics: integer = TICRATE) ACTORDEF function, delays player fire. Added PascalScript functions to control blood color & translation: -GetActorTranslation(actor): string; -SetActorTranslation(actor, translation: string); -GetActorBloodColor(actor): string; -SetActorBloodColor(actor, bloodcolor: string); Added 10 new translations CRTRANS0 thru CRTRANS9 for user defined translation lumps. Added A_SetTranslation(trans: string) ACTORDEF function. Added A_SetBloodColor(color: string) ACTORDEF function. Fix some problems with player movement clipping when landing on other actors. Emulates correctly the ripple effect in OpenGL mode. Savepath for DOOM2F.WAD (French version). XMI (Extended midi), CMF (Creative music file) & SOP (Sopepos) music support. Brain final boss save/load consistancy. Also removed limit of only 32 boss spots. Added A_BrainAwakeVanilla() & A_BrainSpitVanilla() ACTORDEF functions. Use the carret ("^") instead of slash ("\") while searching for external textures for sprites (OpenGL). The engine can use the zfloor & zceiling fields of vertexes in UDMF. Support for the health and gravity fields of things in UDMF. Correctly display the game mode in startup screen when the -iwad parameter is used. Displays the game mode sooner in startup screen. Process C lang style defines and conditions in custom content. The default value of autoloadgwafiles console variable changed to false. Added the #exitif conditianal directive in text content definition lumps. Improved HACX support. Recognizes IWAD file extention. Added SetConsoleStr, SetConsoleInt & SetConsoleBool PascalScript functions to set console variables. The new value will not be saved to the ini file and it can only be retrived with the GetConsoleStr, GetConsoleInt & GetConsoleBool PascalScript functions. Save/Load mechanism global changes to easily accomodate new fields additions. Speed optimization to string manipulation routines. UMAPINFO support. Remember last skill level. Small optimizations to the software voxel rendering. Corrected flat scale in OpenGL mode. Faster proccessing of include files. Added #CVARFORCE directive. It can be placed in any text content and forces the value of a console variable to the value specified. Detect 426x200 screens. Added new PascalSccript functions to access the new SideDefs' fields: -function PS_GetSideTopTextureOffset(const sd: Integer): Integer; -procedure PS_SetSideTopTextureOffset(const sd: Integer; const offs: Integer); -function PS_GetSideBottomTextureOffset(const sd: Integer): Integer; -procedure PS_SetSideBottomTextureOffset(const sd: Integer; const offs: Integer); -function PS_GetSideMidTextureOffset(const sd: Integer): Integer; -procedure PS_SetSideMidTextureOffset(const sd: Integer; const offs: Integer); -function PS_GetSideTopRowOffset(const sd: Integer): Integer; -procedure PS_SetSideTopRowOffset(const sd: Integer; const offs: Integer); -function PS_GetSideBottomRowOffset(const sd: Integer): Integer; -procedure PS_SetSideBottomRowOffset(const sd: Integer; const offs: Integer); -function PS_GetSideMidRowOffset(const sd: Integer): Integer; -procedure PS_SetSideMidRowOffset(const sd: Integer; const offs: Integer); Use 64 characters long string for short names in PK3. 426px wide assets support (Unity port IWADS). Added "DROPPED ITEM" alias for "DROPITEM" DEHACKED field. Added MF5_EX_PUSHWALL, MF5_EX_MCROSS, MF5_EX_IMPACT & MF5_EX_PCROSS mobj flags. UMAPINFO custom field SKYTEXTURE2. UMAPINFO custom field LIGHTNING. Lightning special effect. Added MT_MAPSPOT & MT_MAPSPOTGRAVITY actors. Fix wrong coordinates check in sight check. Interpolate only the sectors touched by the renderer in uncapped framerate. Added #CREATEPALETTE directive. It can be placed in any text content and forces the engine to recreate PLAYPAL & COLORMAPS. You can specify a base pal as parameter. Texture offsets can be set individually for top, bottom & middle textures of sidedefs. Added "HIDDEN" UDMF sector property. DEFAULTMISSILE in ACTORDEF will add the MF5_EX_IMPACT & MF5_EX_PCROSS mobj flags. Fix of OPENARRAYOFU16 and OPENARRAYOFS16 declarations (PascalScript). Fixed missileheight ACTORDEF export. Added meleethreshold mobjinfo field. Does not check CRC for grAb PNG chunk. Added windthrust & windangle sector fields. They affect actors with the +WINDTHRUST flag. More flexible Save/Load serialization to allow easier field additions and save space. Moving Poly objects interpolation (uncapped framerate mode). Added NOJUMP sector flag. When set it will prevent player jump in the sector. Added interpolatepolyobjs console variable. When true (default) will interpolate polyobjs movement. Rotating Poly objects interpolation (uncapped framerate mode). Added NOJUMP option in UMAPINFO. Added NOCROUCH sector flag. When set it will prevent player crouch in the sector. Added NOCROUCH option in UMAPINFO. Added 77 new PascalScript funtions to access UDMF line specials procs: -Ceiling_CrushAndRaise() -Ceiling_CrushRaiseAndStay() -Ceiling_CrushStop() -Ceiling_LowerAndCrush() -Ceiling_LowerByValue() -Ceiling_LowerByValueTimes8() -Ceiling_LowerToFloor() -Ceiling_LowerToHighestFloor() -Ceiling_LowerToLowest() -Ceiling_MoveToValueAndCrush() -Ceiling_MoveToValue() -Ceiling_MoveToValueTimes8() -Ceiling_RaiseByValue() -Ceiling_RaiseByValueTimes8() -Ceiling_RaiseToHighestFloor() -Door_Close() -Door_CloseWaitOpen() -Door_Open() -Door_Raise() -FloorAndCeiling_LowerByValue() -FloorAndCeiling_LowerRaise() -FloorAndCeiling_RaiseByValue() -Floor_CrushStop() -Floor_LowerByValue() -Floor_LowerByValueTimes8() -Floor_LowerToHighest() -Floor_LowerToLowestCeiling() -Floor_LowerToLowest() -Floor_LowerToNearest() -Floor_MoveToValue() -Floor_MoveToValueTimes8() -Floor_RaiseAndCrushDoom() -Floor_RaiseAndCrush() -Floor_RaiseByTexture() -Floor_RaiseByValue() -Floor_RaiseByValueTimes8() -Floor_RaiseInstant() -Floor_LowerInstant() -Floor_RaiseToCeilingNoChange() -Floor_RaiseToHighest() -Floor_RaiseToLowestCeiling() -Floor_RaiseToNearest() -Floor_ToCeilingInstantNoChange() -Floor_Waggle() -Light_ChangeToValue() -Light_Fade() -Light_Flicker() -Light_ForceLightning() -Light_ForceLightningTics() -Light_Glow() -Light_LowerByValue() -Light_MaxNeighbor() -Light_MinNeighbor() -Light_RaiseByValue() -Light_Strobe() -Light_StrobeDoom() -Pillar_BuildAndCrush() -Pillar_Build() -Pillar_Open() -Plat_DownByValue() -Plat_DownWaitUpStay() -Plat_DownWaitUpStayLip() -Plat_PerpetualRaise() -Plat_PerpetualRaiseLip() -Plat_UpByValue() -Plat_UpNearestWaitDownStay () -Plat_UpWaitDownStay() -Polyobj_DoorSlide() -Polyobj_DoorSwing() -Polyobj_Move() -Polyobj_MoveTimes8() -Polyobj_OR_Move() -Polyobj_OR_MoveTimes8() -Polyobj_OR_RotateLeft() -Polyobj_OR_RotateRight() -Polyobj_RotateLeft() -Polyobj_RotateRight() Added option to use legacy midi playback (snd_uselegacymidiplayer default). Added -uselegacymidiplayer & -nouselegacymidiplayer command line parameters. Added -internalmidiplayer command line parameter. Improved midi playback. Max light source distance increased from 2048px to 8192px in software rendering. Small optimizations to sprite rendering. Fixed masked middle texture bleeding when player was exactly placed on the line. Small optimization to masked middle textute software rendering. Bosses will have only seesound and deathsound at full volume by default. Videos: Polyobject demo: Vesper MBF21 mod (with additional LIGHTDEF for DelphiDoom) Edited March 5, 2022 by jval 15 Quote Share this post Link to post
TruthInFiction Posted March 6, 2022 Delphi Doom is looking pretty good, and it's clear you're putting a lot of work into it, so thanks for that. Here's a few requests/things of note: Under the control options, you misspelled Use Joystick as "Use Joystic". Also regarding controls, would it be possible for you to implement the binding of mouse buttons in the menu, and to add bindings for next/previous weapon? Being able to switch weapons with the mouse wheel would be a huge qol improvement. Delphi does not seem to like loading pk3 files that have more than eight characters in the filename. There is a workaround for this by simply adding a period into the filename, for example: Sacrifice.pk3 will not work and Delphi returns an error stating that the base filename is greater than eight characters. On the other hand, Sacrific.e.pk3 will load just fine. This oddity does not seem to apply to wads, which can have longer filenames. I like that different liquids have different sounds When you enter them. I don't think I've seen that in another port. The blood pools seem to have been left out though, like what you see in E3M1. I also think that being able to look left and right is pretty unique, and if Delphi ever gets to the point that vehicles can be added in I think that feature would be very useful for something like a tank or a mech with a rotating torso. From what I've seen, Delphi does not feature the ability to load custom textures and flats from pk3 files, i.e from addons like the above mentioned sacrifice.pk3. Is that something you intend to implement in the future? I'm asking this one more out of curiosity than anything, as I imagine that would be more technical than the other things I've mentioned and would probably take time away from higher priority features. 1 Quote Share this post Link to post
jeremieh Posted March 8, 2022 for some reason loading wads doesn't seem to work, I tried loading grove.wad, which failed, then I tried auger;zenith which also failed, with the error message saying something about the AASHITTY texture 1 Quote Share this post Link to post
TruthInFiction Posted March 8, 2022 2 hours ago, jeremieh said: for some reason loading wads doesn't seem to work, I tried loading grove.wad, which failed, then I tried auger;zenith which also failed, with the error message saying something about the AASHITTY texture First question is how are you trying to go about loading these wads? I haven't had any trouble loading levels myself, either through Delphi's own launcher or through ZDoom Launcher. Second question is what sort of levels are they? Are they meant for certain source ports? If they're made with GZDoom in mind for instance, they may require features that Delphi just doesn't have. 1 Quote Share this post Link to post
jval Posted March 9, 2022 11 hours ago, jeremieh said: for some reason loading wads doesn't seem to work, I tried loading grove.wad, which failed, then I tried auger;zenith which also failed, with the error message saying something about the AASHITTY texture I tried both GROVE.wad & DBP37_AUGZEN.wad and I had no problems loading them. I've only got a waring message while parsing UMAPINFO lump in DBP37_AUGZEN.wad which I've already fixed, besides that no other problems occured. How do you load the wads? Try not using the launcher (it's still buggy and it is destributed upon request). Try instead to drag the wads over the executable (Doom32.exe or GLDoom32.exe). 0 Quote Share this post Link to post
GRAU Posted March 10, 2022 On 3/2/2022 at 12:08 PM, jval said: Major new features: Official UDMF support, a feature that actually had been left unfinished for more than 6 years, since ver. 1.1.600 (31 Dec, 2015). Polyobjects in all branches. ACS script (compiled or plain source) in all branches with a new ACS command line compiler tool based on Hexen's ACC compiler 1.10 by Ben Gokey. Full UMAPINFO support for Doom and Heretic branches (with some small extensions/additions), limited support for Strife branch. Full MBF21 support for Doom branch, good support with some missing features for Heretic, Hexen & Strife branches. The software renderer casts dynamic lights to sprites, voxels and masked middle textures. Crouching in all branches. Fog sectors in all branches. Crosshair in all branches. Support for 426x200 widescreen assets of Unity Doom source port. (You must use the Unity Port IWAD). WAV, OGG, FLAC, OGA, AU, VOC & SND sound files can be loaded directly from PK3 files without the need for a WAD equivalent. XMI (Extended midi), CMF (Creative music file) & SOP (Sopepos) music support. Individual upper, lower and middle texture offsets for sidedefs. Simple dialogs for Doom, Heretic and Hexen (without the full mechanics of Strife branch). Added support for Mars3D in DelphiDoom script IDE (DD-IDE tool). Oh yeah, man! You are unbelievable cool! Let me try now to port my mod to delphidoom... What about multiple 3d floors per sector? 2 Quote Share this post Link to post
GRAU Posted March 10, 2022 (edited) Actualy - what about Mod, XM or S3M module (tracker) support? do you have that in plans. Now i am ready to stat converting "Oneday" to DD. But i compose music in MOD because that is hi-tech of HI-TECHes from early 2000)))) Small files and cool music in the singla bottle. Edited March 10, 2022 by GRAU 1 Quote Share this post Link to post
jval Posted March 10, 2022 39 minutes ago, GRAU said: Oh yeah, man! You are unbelievable cool! Let me try now to port my mod to delphidoom... What about multiple 3d floors per sector? Thanks! Multiple 3D floors are in my wishlist too, but still needs a lot of preparation to figure out how they could be implemented to the engine. The software rendering conserns me a lot since I must figure out how to avoid overdraw (something that DelphiDoom does with the single 3d floors, maybe not perfectly but at a good degree). Also the physics/collisions could be tricky. The only thing that doesn't concern me is the OpenGL rendering :) 35 minutes ago, GRAU said: Actualy - what about Mod, XM or S3M module (tracker) support? do you have that in plans. Now i am ready to stat converting "Oneday" to DD. But i compose music in MOD because that is hi-tech of HI-TECHes from early 2000)))) Small files and cool music in the singla bottle. DelphiDoom has MOD, XM, S3M and IT track music support since ver. 2.0.6.729. XMI, CMF & SOP support added in lastest ver. 2.0.7.730. The music files must be in a WAD file to be detected. It doesn't detect them in a pk3 (but this is in TODO list). 0 Quote Share this post Link to post
GRAU Posted March 10, 2022 2 hours ago, jval said: DelphiDoom has MOD, XM, S3M and IT track music support since ver. 2.0.6.729. Great! 2 hours ago, jval said: Multiple 3D floors are in my wishlist too, but still needs a lot of preparation to figure out how ok, i will wait. Another thing - do i have to split all my textures into flats and patches, ort can i use em from a zip/pk3/textures folder directly? i use 32bit png, and any zdooms in UDMF mode just load them as textures - no difference - i can use them for both floors or for walls without adding the image names to texture or any other lumps. Can i do the same on delphidoom> As for ZDoom - it calculates colors and lights iin 32bit i feel, and trasforms final picture into palete. That is becauser of coloured light (sector colour) - does Delphidoom apply sector color in udmf? 0 Quote Share this post Link to post
jval Posted March 10, 2022 2 minutes ago, GRAU said: ok, i will wait. Another thing - do i have to split all my textures into flats and patches, ort can i use em from a zip/pk3/textures folder directly? i use 32bit png, and any zdooms in UDMF mode just load them as textures - no difference - i can use them for both floors or for walls without adding the image names to texture or any other lumps. PNGs (and other image formats as well) can be used in a pk3 file as a replacement only to an existing texture or flat, i.e. you must have an equivalent entry in TEXTURE1/TEXTURE2/TEXTURE3 lump, or a flat. 2 minutes ago, GRAU said: Can i do the same on delphidoom> As for ZDoom - it calculates colors and lights iin 32bit i feel, and trasforms final picture into palete. That is becauser of coloured light (sector colour) - does Delphidoom apply sector color in udmf? DelphiDoom can have only the simple colored lighting used in Boom. 0 Quote Share this post Link to post
jval Posted March 10, 2022 1 minute ago, GRAU said: Can i use flats for walls in udmf? No, you can't. But you can have a single PNG in pk3 and a flat and a texture in WAD with the same name, they will both map to the same pk3 png. 1 Quote Share this post Link to post
GRAU Posted March 10, 2022 i really hate an idea of usege dffer5ent texturres for walls and flats. If it is real - try to makedirect load for png from :"textures" folder - as flats andd then - the support for applyiong flat images to wals. But have in mind that those"flats" can be not only of 64 x 64 res but larger or smaller too. I may send you a mod - that is really usefull and lots of udmf map authors just load textures from png (NOT replacing the existing paleted ones). That is one of udmf's main advantages in zdoom. I know you ve done a lot changes to delphidoom and i really love those dynlights on voxels. Thats marked as 11 of 10))) 1 Quote Share this post Link to post
GRAU Posted March 10, 2022 Just now, jval said: No, you can't. But you can have a single PNG in pk3 and a flat and a texture in WAD with the same name, they will both map to the same pk3 png. then may you automatize somehow that creation of virtual flats and textures from a single png in zip? 0 Quote Share this post Link to post
GRAU Posted March 10, 2022 no matter now how accurate that will be done, will that use double ammount of ram or not. The main thing now is to start converting maps from zdoom to dd with its own cpecifics, understanding the fact that limitation to a singkle 3d floor is not forever but trying to decrease multi 3d floor ammount. Actualy - does DD supports PHYSICAL (walcable) middle textures? i would replace tonns of 3d floors with that. 0 Quote Share this post Link to post
jval Posted March 10, 2022 3 minutes ago, GRAU said: then may you automatize somehow that creation of virtual flats and textures from a single png in zip? I have no objection to use plain PNGs (or jpegs or bmp, or pcx or tiff or etc... picture format) directly from pk3 without the need for defining these to wad, but with the some limitations to the size, eg I'm not sure if I can make the engine handle non 64x64, 128x128, 256x256 etc flats, or how the engine will work with non power of 2 tiled vertically textures. 6 minutes ago, GRAU said: Actualy - does DD supports PHYSICAL (walcable) middle textures? i would replace tonns of 3d floors with that. Do you mean tiled vertcally middle textures? No it does not support such a feature, but... RAD does! It would not be a problem. Can you give me an example screenshot or wad to look? 1 Quote Share this post Link to post
GRAU Posted March 10, 2022 Just now, jval said: I have no objection to use plain PNGs (or jpegs or bmp, or pcx or tiff or etc... picture format) directly from pk3 without the need for defining these to wad, but with the some limitations to the size, eg I'm not sure if I can make the engine handle non 64x64, 128x128, 256x256 etc flats, or how the engine will work with non power of 2 tiled vertically textures. Do you mean tiled vertcally middle textures? No it does not support such a feature, but... RAD does! It would not be a problem. Can you give me an example screenshot or wad to look? not a tiled vertically (but that is used sonmewhere too). I can give you my wad i create for zdoom. there i use tiled middle tex on the map d2m01 in the center of the steps section, for grilled (with transparency) wall. But i said about an abilitu to create for example a rail that in facct is ony the single (not tiled verticaly) middle texture, but the player can stand on it likie on 3d floor, so it is a middle texture thathas a physical/collision model depending to its height. That can be used instead of a real 3d floor sometimes. As for using a dir with pmgs - that is simply usefull - you do not need to define texture lumo, you do not need to store a paleted copy of texturer into wad doubling the mod size. You just have an image, and you can apply it wherever you wish. That is one of the main ideas of udmf, like texture or flat offsets and rotations of flats, etc 0 Quote Share this post Link to post
GRAU Posted March 10, 2022 (edited) I made 2 screens with options from udmf. First one - the option which enables infinite height (V-tiling) for a midle texture, but gives no physic or collision changes. another one enables height-senstive collision. It was used for walkable pipes under the ceiling or walkable railings withut 3d floors (middle floors) - i did not use it yet but if there will be no way to use 203 middle flors one above another - that gets some sense: As for usage of unifed texture iomages direct from zip/pk3 - that saves some place in project, that is usefull - i give you a libnk and you can look at ma wad - some textures there a used for both walls and ceiling. F_metal4 for black metal elements, some bricks and others, woden door frames. ftp://rdw.xp3.biz@rdw.xp3.biz/Archive/1Day.zip But you will need zdoom 2.8 or lzdoom of any revision to look it. I have another one but f you wish i will show it in PM because that is a bit secret one. This one is a tech demo now where i will test new weapons and enemies. Edited March 10, 2022 by GRAU 1 Quote Share this post Link to post
jval Posted March 10, 2022 27 minutes ago, GRAU said: But you will need zdoom 2.8 or lzdoom of any revision to look it. I have another one but f you wish i will show it in PM because that is a bit secret one. This one is a tech demo now where i will test new weapons and enemies. OK, thanks. I'll look at them. 1 Quote Share this post Link to post
GRAU Posted March 10, 2022 (edited) 13 minutes ago, jval said: OK, thanks. I'll look at them. i woukld advice to use LZDoom 3.87b or higher. It has dynlights in soft too. I decided not to hurry at porting - now there are too much things that are diffenent to zdoom's, but i wont leave that idea, just i'll wait for some changes, and focus on voxelpacks that time. I like how dynlights look now in DD. Dat thing is really sexy, and now DD is the only port that affects voxels with Dynlights in soft mode. Edited March 10, 2022 by GRAU 1 Quote Share this post Link to post
jval Posted March 12, 2022 (edited) On 3/10/2022 at 8:11 PM, GRAU said: i woukld advixe to use LZDoom 3.87b or higher. It has dynlights in soft too. Thanks, I have the latest version 3.88b so I'm OK :) Quote I decided to wait a little with porting - now there are too much things that a diffenetn to zdooms but i wont leave that idea, just i'll wait for some changes, and work on voxelpacks that time. By supporting UDMF does not mean that the engine inherits ZDoom UDMF features. DelphiDoom has it's own namespace and it's own line specials. Yes, there is a lot of common base, i.e. all the Hexen specials, fields for slopes (without line specials), texture offset and flat rotation, but a lot of things works differently, e.g. all Doom format specials still exist in "DelphiDoom" UDMF namespace. Also generalized lines work in UDMF, despite the fact that the UDMF line specials with parameters makes a lot of them obsolete; I just didn't see the reason to disallow them from the UDMF format. It's like ACTORDEF & DECORATE: There is a minimum common base, but each has it's own distinct features. On 3/10/2022 at 8:11 PM, GRAU said: and now DD is the only port that affects voxels with Dynlights in soft mode. On 3/27/2021 at 4:33 PM, GRAU said: I dont talk about precise light applying on voxels, but at least common colour and light changes for whole voxel, and the same for sprites, so i could light them up with a dynlight based flashlight. Also I should mention that soft lights affects voxels in a per pixel accuracy, since it was discussed an option to use constant depth. While developing I found out that there is not actual performance gain to use constant depth. Since the voxels are already rendered in software mode in non constant depth (that's why the... look like voxels, not like sprites), I used the already calculated depth to write to z-buffer. Edited March 13, 2022 by jval 0 Quote Share this post Link to post
jeremieh Posted March 15, 2022 On 3/9/2022 at 3:47 AM, jval said: I tried both GROVE.wad & DBP37_AUGZEN.wad and I had no problems loading them. I've only got a waring message while parsing UMAPINFO lump in DBP37_AUGZEN.wad which I've already fixed, besides that no other problems occured. How do you load the wads? Try not using the launcher (it's still buggy and it is destributed upon request). Try instead to drag the wads over the executable (Doom32.exe or GLDoom32.exe). I redownloaded it and it seemed to work, oddly enough 1 Quote Share this post Link to post
jval Posted March 17, 2022 (edited) A small update is available: What's new: Added -pistolstart command line parameter for DelphiDoom and -wandstart for DelphiHeretic. Key bindings for the AUTOMAP functions. Default sound channels raised to 32, maximum sound channels raised to 64. Speed optimizations in software rendering, improved performance especially in heavy maps with tons of sprites. Added support for tall patches in PNG format (tested with up to 1024px height, but should work higher) Fixes: Fixed crosshair drawing in OpenGL mode. Fixed 3d colissions of actors moving up or down other actors. Fixed misspelled of "joystick" in the menus. Fixed UMAPINFO possible warning message when parsing multi-strings. Downloads: *** Removed *** Edited March 18, 2022 by jval Removed obsolete download links 0 Quote Share this post Link to post
TruthInFiction Posted March 17, 2022 This build seems to have introduced a bug. I started playing E4M1 and got this: This is the shotgunner alcove that is on the far side from the red skull key door. It only looks like this when you are looking out from certain angles. Below is what you see if you're looking straight out of the alcove. This does not happen when you're in the alcove that is next to the red skull key door no matter which angle you are looking out from. I went back and checked the same location in the previous build and the bug did not occur. I also noticed that the plasma gun tanks the fps in both this build and the previous build, and the closer you are to where the plasma balls are exploding the harder it hits, bottoming out at 14 fps for me when I'm right up against a wall and just holding down the fire button. The following screenshot was taken from the 730 build: 1 Quote Share this post Link to post
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.