Releases: edge-classic/EDGE-classic
EDGE-Classic 1.21
Available Downloads
edge-classic-121-msys.zip - MSYS build for Windows. Has all required libraries included.
edge-classic-121-msvc.zip - MSVC build for Windows. May require installing the Visual C++ Redistributable from Microsoft's download page.
edge-classic-121-windows_xp.zip - Windows XP-compatible MSYS release. Users of Windows Vista and later should use one of the above packages instead.
ModDB Addons Page
https://www.moddb.com/mods/edge-classic-add-ons/addons
CHANGELOG for EDGE-Classic 1.21 (since EDGE-Classic 1.2)
Bugs fixed
- Fixed issues when launching from a location other than the executable directory on non-Windows builds
- Fixed rare ceiling crusher-related bug
- Text based menus for and were not working if the Main menu was using custom graphics
- Fixed null string CTD in HUD_DrawText and font_c::StringWidth
- Fixed issue with FS_ReadDir returning relative paths
- Restored "Hudless" option in COALHUDS HUD cycling
General Improvements
- Improved STYLES.DDF functionality across console and menus; backgrounds images/colors and translucency are no longer hardcoded
- Added "Edge" UDMF namespace detection in preparation for EDGE-Classic's UDMF spec
- Improved menu cursor positioning and scaling
- Back mid-texture on a Glass line type is automagically mirrored
- Load/Save menu will use DDFLANG difficulty strings instead of hard-coded Doom strings when showing savegame details
- Improved CMD_Dir result display
- DOOMWADDIR and DOOMWADPATH will now be evaluated together instead of separately
- If no -iwad parameter is given, an IWAD will be selected from all IWADs discovered in default search paths based on a scoring/preference system
- Doom 2/Freedoom Phase 2/Final Doom are highest priority due to highest compatibilty with mods/PWADs
- Doom 1/Freedoom Phase 1 are second in line
- Remaining Doom-based IWADs (HacX/Harmony for now) are third
- Heretic/Blasphemer, being the newest games supported, are after those
- If a new custom standalone IWAD (with EDGEIWAD lump) is present in the search list, it will be considered last
New Features
-
Custom standalone IWADs can be created by adding an EDGEIWAD lump to the WAD. This will allow it to pass the automatic IWAD
detection -
STYLES.DDF
- New SPECIAL flag: CURSOR_RIGHT, will align menu cursor to the right side of menu entries
- New properties: X_OFFSET and Y_OFFSET. Will set all menu entries in this style to the same x/y offset.
- New SPECIAL flag: NO_STRETCH_FULLSCREEN, which will disable default behaviour of stretching backgrounds to fill the screen
-
Lines.ddf
-Added 3 new BREAKABLE glass line types:
[830] Breakable Glass: monsters can see through it and can break it
[831] Breakable Glass: monsters: cannot see through it but can break it
[832] Breakable Glass: monsters: cannot see through it and cannot break it -
Sectors.ddf
-Added 6 new coloured sector types:
[4471] EDGE Blue Hue
[4472] EDGE Green Hue
[4473] EDGE Red Hue
[4474] EDGE Yellow Hue
[4475] EDGE Purple Hue
[4476] EDGE Grey Hue
EDGE-Classic 1.2
Available Downloads
edge-classic-1_2-msys.zip - MSYS build for Windows. Has all required libraries included.
edge-classic-1_2-msvc.zip - MSVC build for Windows. May require installing the Visual C++ Redistributable from Microsoft's download page.
edge-classic-1_2-windows_xp.zip - Windows XP-compatible MSYS release. Users of Windows Vista and later should use one of the above packages instead.
ModDB Addons Page
https://www.moddb.com/mods/edge-classic-add-ons/addons
CHANGELOG for EDGE-Classic 1.2 (since EDGE-Classic 1.1)
Bugs fixed
- Fixed bug preventing Backspace from clearing the top keybind entry in a menu without another key being pressed first
- Fixed occasional crash when loading a save game containing 3D floors
- Fixed Load_DOOM sound loading function trying to allocate memory for empty/stub sounds
- Fixed ALWAYS_LOUD things.ddf special not working with non-enemy mobjs
- Fixed SFX loaders treating all sounds as Mono regardless of original sound format
- Fixed pressing the Use key to respawn activating linedefs when the player comes back to life
- Fixed player possibly getting stuck in slider doors if attempting to cross through while they are closing
- Fixed PWAD PLAYPAL lumps not properly being applied to images
- Fixed being able to pick up items while completely still (for instance, voodoo doll spawn on top of an item would immediately
give the player said item upon starting the level) - Fixed voodoo doll spawn points telefragging other objects (could result in instakill upon entering level)
- Fixed DEH_EDGE giving wrong weapon priorities to the rocket launcher and plasma rifle
- Fixed FORCE_AIM attacks being affected by visibility modifiers
- Fixed BERSERK_MULTIPLY not being applied to projectiles
- Fixed ZOOM_FOV = 0 in DDFWEAP not disabling zoom for a weapon
- Fixed erroneous missing sprite rotations when loading sprites from multiple sources
- Fixed possible CTD when a malformed lump name is looked up
- Fixed font recoloring appearing incorrect with non-Doom IWADs or certain PWADs that have their own COLORMAP/PLAYPAL lumps
- Fixed occasional appearance of blank episode in episode selection menu with certain PWADs
- Fixed SFX with SINGULAR+PRECIOUS flags being cutoff when another SINGULAR SFX in the same category is played
- Fixed failure to detect binary-format maps with only the bare minimum number of required lumps
- Fixed rare issue where some PNGs with transparency were detected as solid images
- Fixed map position ("You Are Here") graphics being hidden by a custom Entering image
- Fixed AddImageGraphic function trying to process TGA images as Doom format
- Fixed ON_DEATH RTS scripts triggering when the condition uses a monster that was never in the map to begin with
General Improvements
- DEHEXTRA Support
- COAL/C++ Interop:
-new_game(), load_game(), save_game(), and end_level() hooks added for more flexibility - COAL VM:
-GetFloat, GetString and GetVector added to retrieve COAL variable values from the C++ side
-SetFloat, SetString and SetVector added to set COAL variables from the C++ side
-Function parameters can now be declared optional; all required parameters must be defined first - Original RNG LUT for M_Random/P_Random replaced with improved quality generators from the C++ stdlib
- Crosshair color and size can now be changed via the Video Options menu
- Pre-level story text/intermission will now be skipped when using the IDCLEV/level warp cheat
- Mouse wheel up/down will now page through option menus that have Prev/Next pages (like the keybindings/Load Game menus)
- Improved changing resolutions while in fullscreen mode
- DDF and RTS now use a consistent INVENTORY## naming scheme for inventory items and scripts
- COALHUDS:
-player.use_inventory now only needs the inventory item number passed to it - Module Music:
-libxmp-lite music player replaced with libmodplug, providing far better performance and load times,
with all of the following formats now supported:
MOD, S3M, XM, IT, 669, AMF (both of them), AMS, DBM, DMF, DSM, FAR,
MDL, MED, MTM, OKT, PTM, STM, ULT, UMX, MT2, PSM - Vertical offset scrolling will now work with midmask textures. Midmaskers without vertical scrolling
will remain clamped per the existing implementation - Freedoom Phase 1 and 2 have their own base WAD, which provides corrected text and menu graphics
- Added capturing of console content (if active) in screenshots
- Number of available AMMO and INVENTORY types increased to 99
- Widescreen ratio resolutions added to windowed resolution list
- DOOMWADPATH environment variable now supported
- AJBSP updated to produce only XGL3 nodes compatible with both binary/UDMF map formats
- XGL3 node writing adapted from Eureka codebase with vertex comparison improvements from ketmar/k8vavoom
- XGL3 node loading functions adapted from EDGE 2.x
- GWA file will always be built, regardless of a WAD having internal GL lumps
- This prevents crashes with malformed/orphaned GL lumps in a WAD
- IWADs are now detected by combinations of unique lumps instead of simple filenames
- Improved handling of PWADs with custom status bars that aren't widescreen
- Improved height clipping for non-blocking map objects
- New graphical startup sequence
- Axis Test added to Mouse/Joystick control options menu to assist in mapping thumbsticks/analog triggers
- Widescreen status bar extenders added for Freedoom 1/2, Heretic, and Blasphemer
- Alternate liquid animations now apply when relevant graphics are used in HUD drawing functions (intermissions, etc)
- Console dir/ls commands with just a mask for a parameter will search the current directory instead of requiring an explicit directory path
- IDCLEV/warp will now work with non-standard map names
- Slider options in the Option menu will be drawn with font symbols if an IMAGE DDFFONT type is in use (patch fonts will use the existing slider graphics)
- Console will automatically scroll back to the bottom/input line after inputting a command
- Level stat screens will how fallback to HUD fonts if certain images are missing ("Kills", "Items", etc)
- DDFSTYLE: AUTOMAP background images/colors will now be used when drawing the automap if defined
New Features
-
DP* sound lumps (PC speaker sounds) in the DOOM IWADs are now usable via DDFSFX
-
"PC Speaker Mode" option added to Sound Options menu. Only specific SFX will be used, and
the MIDI player will switch to an appropriate soundfont
-Imitation PC Speaker sounds added for Blasphemer, Heretic, and HacX -
"Pistol Starts" option added to Gameplay Options menu (default Off). Will force player to default state upon
starting a new level. Works with all supported IWADs -
COALHUDS: new commands/variables
-player.rts_enable_tagged(name): Will execute RTS script with matching tag, if one exists
-hud.scroll_image(x, y, name, sx, sy, [noOffset]): will scroll an image in horizontal and/or vertical directions
-hud.get_average_color(name): Will return an RGB vector with the average color of the named image lump
-hud.get_average_top_border_color(name): Will return an RGB vector with the average top border color of the named image lump
-hud.get_average_bottom_border_color(name): Will return an RGB vector with the average bottom border color of the named image lump
-hud.get_lightest_color(name): Will return an RGB vector with the lightest color of the named image lump
-hud.get_darkest_color(name): Will return an RGB vector with the darkest color of the named image lump
-hud.get_average_hue(name): Will return an RGB vector with the average hue of the named image lump
-hud.universal_y_adjust variable: Will apply a Y_ADJUST of this value to all weapon sprites -
COALHUDS: modified commands
-hud.draw_image(x, y, name, [noOffset]) has a new optional [noOffset] parameter which if set to 1, will ignore any X or Y offsets the image may have, both doom style and any defined in images.ddf
-hud.stretch_image(x, y, w, h, name, [noOffset]) has a new optional [noOffset] parameter which if set to 1, will ignore any X or Y offsets the image may have, both doom style and any defined in images.ddf
-hud.draw_text(x, y, str, [size]) has a new optional [size] argument to set the font size in pixels i.e. 16
-hud.draw_num2(x, y, len, num, [size]) has a new optional [size] argument to set the font size in pixels i.e. 16
-hud.draw_number(x, y, len, num, align_right, [size]) has a new optional [size] argument to set the font size in pixels i.e. 16 -
FONTS.DDF
-New font type: IMAGE; an image with a 16x16 ASCII character layout with either a transparent or solid color background
--Examples can be found at https://bmf.php5.cz/, https://dwarffortresswiki.org/index.php/Tileset_repository, and other sites that use spritesheet or bitmap fonts
--Images can also be generated from TrueType fonts using https://lucide.github.io/Font-Atlas-Generator/
--Required parameter: "IMAGE = ", which should refer to a DDFIMAGE definition of the image in question
--Optional parameter: "SPACING = ", accepts positive or negative values to have fine-grain control over horizontal spacing of letters -
IMAGES.DDF
-New special: "IS_FONT = ", needed when using an image in conjunction with the new IMAGE DDFFONT type. Will automatically set the background to transparent
(if it isn't already), as well as apply the required mip/clamping flags to the texture
-IMAGE_DATA command: 'DOOM' format can now be specified in addition to the already existing PNG/JPG/TGA formats -
WEAPONS.DDF
-Command: RENDER_INVERT=TRUE which will cause this weapon to render the...
EDGE-Classic 1.1
CHANGELOG for EDGE-Classic 1.1 (since EDGE-Classic 1.0)
Bugs fixed
- Longstanding SWIM sector special bug fixed. EDGE would continue
flagging the player as being in a SWIM sector even after leaving it.
Happens if SWIM special is used without AIRLESS(underwater) also.
Most noticeable side effect was being unable to jump/crouch and bizarre momentum/speed - Downgraded errors for incorrect 3D extrafloors to warnings instead.
- E3M4 crusher bug fixed.
General Improvements
-
RTS Scripts can now use either a number or a string for their TAGs.
-
Replaced libpng, libjpeg and image_tga.cc with stb_image.
-
Replaced zlib with miniz.
-
Consolidated some EPI filesystem functions so that platform-specific source files aren't required.
-
Compilation now works with MSVC Build Tools. SDL2 development headers/libs included for this purpose.
-
Player Crouch height reduced to 28, same as other ports.
-
Bumped up the number of sound channels: minimum 32, maximum 96.
New Features
-
Added inventory system
- Controls: Inventory Previous, Inventory Use, and Inventory Next can now be bound to keys
- DDF: INV01-INV25 are usable as PICKUP_BENEFIT options; syntax is the same as giving ammo
- RTS: INV01-INV25 are usable for various commands; syntax is the same as for ammo i.e. ON_CONDITION INV01(3)
- COAL: player.inventory_events(): event-based handling for keys based on Inventory Previous, Inventory Use, and Inventory Next bindings
- COAL/RTS: player.use_inventory(): will call RTS script of appropriate tag when inventory item is used; naming convention for inventory script tags is INVENTORY1 - INVENTORY25
-
Heretic COALHUDS updated with game-approriate inventory display
-
Added 'autoload' folder which is scanned for valid file types on startup. Sub-folders can fine tune what is loaded for specific IWADs.
-
Added "Animated Liquid Type" to Video Options menu; choices are "Vanilla", "SMMU", "SMMU + Swirl", and "Parallax"
-
FLATS.DDF (wad lump "DDFFLAT") which can be used to associate certain sounds, objects etc. with specific flats.
- Command: LIQUID="THIN" or "THICK" can be added to a flat definition. Currently affects swirl/dynamic liquid parameters.
- Command: IMPACT_OBJECT= where is an entry in THINGS.DDF. When the flat is shot, the will be spawned at the impact point (e.g. for splashes from water).
- Command: FOOTSTEP = where is an entry in SFX.DDF. Can be used via COALHUDS to make appropriate sfx when moving across this flat.
-
LINES.DDF
- New command: EFFECT_OBJECT= where is an entry in THINGS.DDF. When the line is activated, the will be spawned in the center of the line (e.g. for sparks from a switch). If the line is of type SHOOT then we spawn the object at the spot where the shot impacts instead.(e.g. a flesh wall that spurts blood when shot).
- New command: GLASS=TRUE which causes this line type to (a)be blocking and (b)will apply the LINE_EFFECT= specials BLOCK_SHOTS and BLOCK_SIGHT if specified.
Once the line is activated(normally via SHOOT) then (1) line will be set to unblocking, (2)BLOCK_SHOTS and BLOCK_SIGHT will be removed, (3) the mid-texture will be removed.
If combined with EFFECT_OBJECT then you can spawn shards of broken glass when the line "breaks" for example. NOTE: GLASS=TRUE should be used with COUNT=1. - New command: BROKEN_TEXTURE= which, when combined with GLASS=TRUE, will replace the mid-texture with this one instead of just removing it i.e. for shooting out a vent and replacing it with a broken vent.
-
COALHUDS: new commands
-player.play_footstep(flatname) checks FLATS.DDF for corresponding entry and plays the sfx associated with this flat.
-hud.screen_aspect() returns the current screen aspect e.g. 1.0, 1.333 etc.
-hud.AM_HIDELINES for hud.automap_option() which hides all geometry on the automap. -
RTS: new commands
-SWITCH_WEAPON which will force a switch to this if the player has it.
-TELEPORT_TO_START which will simply teleport the player back to player 1 start. -
THINGS.DDF
-Crouching now triggers CROUCH states for the player when used with CHECK_ACTIVITY.
-Added player crouch spites to edge-defs.wad. -
New XMP-based music player; MOD/S3M/IT/XM Tracker format songs are now supported.
-
New Game Music Emu-based music player; AY, GBS, GYM, HES, NSF, SAP, SPC, VGM format songs are now supported.
-
New WebSID-based music player; Commodore-64 SID format songs are now supported.
-
Main menu UI by default is now text based and uses strings from language.ddf and colouring/fonts defined in styles.ddf.
If a pwad contains custom menu graphics then they will be used instead. -
New names and DDF definitions for our menu sfx so we don't have to share the same names as normal doom sfx.
-
2 new custom fonts included in edge-defs.wad for use with our new dynamic menu: Verdana-style font and Doom-style.
-
MBF sky transfer linetypes 271 and 272 partially supported via new line Effect "SKY_TRANSFER".
-
Dynamic Reverb option in Sound Menu. Will attempt to reverberate all sounds based on room size and being indoor/outdoors
-
SECTORS.DDF
-Can add specials VACUUM_SFX, SUBMERGED_SFX, and REVERB_SFX to affect sounds while in that sector
-REVERB_SFX has additional required parameters: REVERB_TYPE="REVERB" or "ECHO", REVERB_DELAY=(any number), and REVERB_RATIO=(0-100)
EDGE-Classic 1.0
CHANGELOG for EDGE-Classic 1.0 (since EDGE-Classic Preview 1)
Bugs fixed
-
Apple compilation now works, thanks to testing and PRs from atsb/Gibbon
-
Dropping the console with a movement key held down would preserve that movement while in the console. Now toggling the console properly drops (movement) input
-
Games with only one selectable episode will now skip episode selection and proceed directly to the skill choice menu. This prevents the "Hell on Earth" episode from appearing when it is not appropriate
-
Fixed bug with valid skybox texture references being deleted when cycling between real and pseudo-skyboxes
-
Downgraded textures without patches from being an error (ending the program) to a warning
-
Fixed occasional bug where attempting to bind a key would map it to the wrong command
-
Fixed bug where canceling out of an RTS Menu would instead select the first option; now it should exit with no result
-
Fixed player being allowed to attempt to load a game from an empty slot
-
Fixed inheritance for DDFWEAP
-
Sloped sectors underneath an extrafloor will now actually use their slope instead of 0 (fix backported from EDGE 2.x)
General Improvements
-
Creating a new Save Game with a blank name will now generate a default name (gamepad users can now create new saves without a keyboard)
-
"Found Secret" message now uses DDFLANG.
-
Berserk colour tint is no longer hardcoded and can be modified via DDFCOLM.
-
Merged CeeJay's LINES DDF with ours to create the ULTIMATE LINES DDF ;)
-
Replaced GLBSP with AJBSP as EDGE-Classic's internal nodebuilder
-
doom_ddf folder content merged into edge.wad and the folder removed. The past is the future...again ;)
-
Migrated from SDL1 to SDL2 for longevity and potential new features
-
Allow for FRONT/BACK to be recognized as RIGHT/LEFT textures in the RTS CHANGE_TEX function to suit modder preferences
-
Added missing graphics for Harmony and HacX option menus (Sound, Mouse, Gameplay, etc.) so that they don't use the fallback/incorrectly
paletted Doom menu graphics -
Improved joystick/gamepad handling; added ability to map dpad (hat) buttons and analog triggers to actions
-
Added "Menu Navigation" option in Controls to bind Menu Open/Up/Down/Left/Right/Select/Cancel
-
Added cursor to navigate RTS menus and select options in addition to using the number keys.
-
Added ability to remap functions previously hardcoded to the function keys (Quicksave, Quickload, etc)
New Features
-
MP3 Sound Effects Support
-
ATTACKS.DDF:
-New attack type: DOUBLE_SPAWNER to mimic the pain elemental in Doom64. -
THINGS.DDF:
-New SPECIAL flag: FLOOR_CLIP. This things sprites will always stick to the floor in the case that it's too tall for the sector it's in. -
More game IWADs supported: HACX, Herectic, Harmony, Blasphemer
-HACX: Full support. Includes bug fixes and widescreen support by CeeJay. Some graphics credited to HACX 2 team.
-Harmony: Full support. May be some (hopefully) minor differences.
-Heretic: Partial support. Item inventory not implemented in the base engine yet.
-Blasphemer: Rudimentary support; less thorough compared to Heretic, but IWAD will now be recognized and launch. -
Experimental floor offset: any linetype that uses the SPECIALs "ALIGN FLOOR" or "ALIGN CEILING", if the line has texture offsets applied then EDGE will use those to offset the floor flat.
-
COALHUDS: New command
strings.find(s,TextToFind): will find a sub-string at ANY position. Returns position it was found at or -1 if not found. -
Added water splash sfx to EDGEs default SWIM sectors.