Raze 1.2.0
This new release brings several new features:
- full internationalized fonts for all games
- enabled language options for already complete languages (DE, PT, RO)
- optional advanced weapon interpolation for Blood
- GLES backend for better low end hardware support
- enabled the text screens when quitting Duke and SW.
- update of Blood's 'modern' features to the latest version of NBlood
Detailed list of changes:
- Duke: Use
DeferredGameStart()
instead ofChangeLevel()
incheatLevel()
to instantly warp to the targeted map, matching DOS behaviour. - fixed bad serializers for vec2_t and vec3_t.
- Exhumed: Avoid masking bits into the sector index as well.
- Exhumed: Avoid masking sound flags into the sprite index.
- Exhumed: fixed sound origin in DoRegenerates.
- split off the extended sprite flags into their own word.
- flag sprites for automapping regardless of the 'automapping' variable's value.
- Attempt to fix music replacement definitions again. Store per-map music replacements in a TMap, and perform the replacements after parsing the MAPINFO
- do not crash on badly defined walls where the end point is missing.
- core shader override block, backported from GZDoom.
- Blood: fixed super secret notification on the level summary screen.
- Duke: fixed some incorrect cutscene playback speeds.
- SW: fixed recursive saving of panel sprites
- clear pspAsArray at the beginning of a save/load operation, not at the end.
- SW: avoid crashing when unwinding from a savegame loading error.
- Duke: fixed a few places using a sprite index where a player index is needed.
- Duke: don't process input when not in a game.
- Duke/RR: Fix clearing of weapons for RRRA E2L2 that should only be done for RR.
- Fixed bug collecting lifeleech with ignited tnt/spray
- Skip CheckProximityWall when newSectCheckMethod is set
- Blood: don't abort the INI scanner if it finds a file with resource file index 0.
- Remove early return from
GrpScan()
that was allowing addons to come through even if they weren't valid. - Duke: Correctly mark
Duke: Alien World Tour
as a Duke add-on. - fixed: List menus still allowed to select unselectable items with the mouse.
- Fix issues with self collision on MoveMissile()
- Add modern map kViewEffectSpotProgress support
- Blood: Fix handling of QAVs defined as loopable while interpolating.
- Blood: Implement
defineqav
DEF parser with hookup to game-side code. - Blood: Fix teleport triggers not updating player angle
- Added new cl_bloodvanillaenemies CVAR
- Improved GetClosestSpriteSectors() detection
- Blood: removed redundant STAT_Update call in StartLevel.
- Don't trigger fall scream after player has died
- Fixed burning cultists switching type in water
- Fixed glitched burning enemy state
- Fixed burning Caleb using innocent burning sprite
- Exhumed: fixed incorrect CD tracks being played through cutscenes
- Exhumed: fixed crash when ending the game.
- call ColorMatcher.Pick instead of BestColor when remapping a voxel.
- avoid calling the node builder to triangulate degenerate sectors.
- Duke: fixed sound lists for E4 intro cutscene.
- Exhumed: fixed bad arguments of BuildGameoverScene.
- Tweaked next/prev weapon behavior underwater
- flag SW's cutscenes as 'boss death only'.
- Fix ignited spray/TNT issue when going underwater
- added means to define resource IDs in all container formats allowing long file names.
- Blood: Expose legacy 1.0 weapon handling game option as a CVAR.
- fixed detection of Steam's Duke3D on macOS
- Blood: Restore originally intended
isRunning
code that never worked behind two CVARs to offer an alternative playing experience. - Blood: Perform interpolation of menu's blood dripping.
- validate 'nextsector' fields on walls.
- set currentLevel before calling engineLoadBoard. This is needed if the compatibility patcher needs to alter mapinfo data.
- Blood: fix potential view sprite overflows
- Blood: fix view sprites overflow in ROR code
- Blood: fix OOB issue in aiPatrolSetMarker
- Blood: fixed path validation for cutscene files.
- fixed bad operator grouping in cheat code.
- quote argument for sending cheats from the chat editor.
- fix crash issue with empty VOCs.
- Duke/RR: Call Bowling lane reset code only when playing RR.
- adapted the Zip root folder eliminator to deal with archives that do not add proper folder records to their central directory.
- adapted cheat input handler to treat spaces as '0' when entering parts of numeric fields.
- Blood: fixed parser for 'mario' cheat to treat a leading space for the level number as 0.
- Rides Again: Possible array index by -1 in Proj_DoHitscan(). Added check to prevent this.
- handle newly activated 'unused' fields properly for serialization.
- Build: Change
MAXSPRITESONSCREEN
from constant of 2560 to 1/4 of MAXSPRITES. Mods like Blood's Eviction are pushing these limits hard. Bumping the onscreen limit resolved recurring crash onsstation.map
with no apparent ill-effects. - Blood: Add some nullptr checks to the
aiPatrol*()
inline bools. - Blood: Fix ammo colour for status bar and first fullscreen HUD.
- Blood: Repair some missing nullptr checks causing a crash upon reloading after dying.
- fixed initialization pf upscale state properly.
- Add leading zero to
statFPS()
output (vid_fps
) so that the text doesn't bounce continually when alternating between 10 ms and <10 ms. - Pass the missing fullscreen flag when creating a Vukan window.
- SW: Remove
gi->FreeGameData()
from game as its inside code wasn't freeing game data but level data already freed ingi->FreeLevelData()
. - Capitalise
CPART07.AR_
andCPART15.AR_
inProcessOptions()
. The original files are in capitals and this is important as POSIX systems are case-sensitive. We can't cater towards every use-case but this should cover most bases. - Duke: Ensure
gi->NextLevel()
sets the skill level upon invocation. - Ensure
g_nextskill
is used everywhere so that setting skill for next level works properly. - Blood: Capitalise
Blood
for 1.0 and 1.1 grpinfo definitions for consistency. - Blood: Fixed grpinfo declarations for Blood 1.0 and 1.1 as per wildweasel on the forums: https://forum.zdoom.org/viewtopic.php?f=358&t=67220&start=45#p1149216
- Blood: Hide
Multiplayer
from the menu. - Blood: Lock input after setting angle/horizon targets in nnexts.cpp code, then unlock in
ProcessInput()
whereresetForcedSyncInput()
is called. - Allow ticker to lock input to player's angle and horizon without having to force use of synchronised input.
- Blood: Restore original horizon algorithm in
trPlayerCtrlSetLookAngle()
and adjust to Raze's backend input code. - Blood: Make delirium rotscrnang smoother with use of more precision.
- Blood: Fix angle issues with NHIS.
- Blood: Add nullptr check for
actor2
inProcessTouchObjects()
. - Fix menu strings and missing class declaration for
VideoOptions
. - added 'endofgame' CCMD. Not really good yet, but it does what's needed, i.e. write out the statistics for the current session.
- Exhumed: Move key display on
DrawHUD2()
to accommodate larger ammo display for M60 withcl_showmagamt 1
from 2a8e636. - Exhumed: Extend 7b8dcde by showing the M60's clip/magazine amount available when
cl_showmagamt 1
is set. - Exhumed: Move pistol clip/magazine recalculation code that was added in 593bbe1 from
FillWeapons()
toCheckClip()
. - Exhumed: Change M60's clip/magazine capacity from 99 to 100 to better match the max ammo capacity of the weapon. This does not increase the player's available ammunition.
- Exhumed: Make
FillWeapons()
fill the ammo count to the maximum allowed by the game for all weapons (300). - allow palette emulation for indexed hightiles.
- support for indexed hightiles.
- Allow CON-based games to have multiplayer episodes filtered from menu.
- Exhumed: Ensure
FillWeapons()
recalculates the pistol clip amount after filling. - Exhumed: Make use of
cl_showmagamt
. - relaxed consistency checks for VOC files. Rampage Warrior contains a few sounds that failed validation so this check does not exist in the original 3D Realms sound code.
- Blood: fixed order of initialization for voxels. Just like Shadow Warrior it needs to load its voxel table before .def files.
- fixed texture lookup for hightile lookup. Not all commands had the proper flags to also look in the root folder.
- SW: Create inline function
pspPresentRetractScale()
to scale the rate at which weapons present and retract based on the current tile's height vs. the original asset's height. - fixed crash when parsing malformed .def file
- Remove some remains of Redneck Deer Huntin'.
- Use
isWW2GI()
in more places. - Use
isNamWW2GI()
in more places. - Use
isRR()
in more places. - Use the new
isSWALL()
wrapper everywhere. - SW: Set default skill level to match original release and what the manual says is default.
- SW: Ensure
PANEL_SPRITEstruct
'sox
/oy
values are in the save data. - SW: Declare and initialise variables in
pWeaponBob()
vs declaring and initialising later on to reduce warnings about variables being uninitialised. - Optimise
fFindDistance2D()
to multiply by inverse rather than divide by a constant. - SW: Rename
cl_smoothsway
tocl_swsmoothsway
and enable by default - SW: Factor out bob coordinate backups.
- SW: Factor out panel interpolation backups;
- SW: Factor out repeated panel coordinate math into inline functions.
- SW: Remove fixed-point math from panel x/y coordinate updating.
- allow external replacements of SW's 3D Realms logo to use their own palette.
- disable texture name truncation for textures/ directory.
- don't attempt to decode animation frames at offsets beyond the end of the current page.
- SW: Promote
PANEL_SPRITEstruct
'sxorig
/yorig
values from int to double to matchx
/ox
andy
/oy
respectively. - zero-terminate the buffer for reading Blood's INI files.
- dynamically adjust SW's menu spacing based on language.