Skip to content

Releases: Caball009/GeneralsGameCode

weekly-2026-05-01

01 May 10:20
a9b260a

Choose a tag to compare

Changelog

weekly-2026-04-24

24 Apr 10:21
471dc26

Choose a tag to compare

Changelog

weekly-2026-04-17

17 Apr 10:10
6b1bccd

Choose a tag to compare

Changelog

weekly-2026-04-10

10 Apr 10:06
d31c6c5

Choose a tag to compare

Changelog

weekly-2026-04-03

03 Apr 09:50
f83b376

Choose a tag to compare

Changelog

weekly-2026-03-27

27 Mar 09:50
08b8420

Choose a tag to compare

Changelog

weekly-2026-03-20

20 Mar 09:39
39647c3

Choose a tag to compare

Changelog

  • fix(logic): Improve validation of MSG_SET_RALLY_POINT in GameLogicDispatch (TheSuperHackers#2441)
  • fix(logic): Improve validation of MSG_NEW_GAME in GameLogicDispatch (TheSuperHackers#2440)
  • fix(logic): Improve handling of ENABLE_RETALIATION_MODE in GameLogicDispatch (TheSuperHackers#2408)
  • fix(logic): Improve validation of MSG_DO_SPECIAL_POWER and variants in GameLogicDispatch (TheSuperHackers#2380)
  • bugfix(rallypoint): Make healed units follow building rally point on exit (TheSuperHackers#1822)
  • bugfix(supply): Implement proportional supply bonus scaling to fix too generous money deposits for partial supply drops (TheSuperHackers#2431)
  • bugfix(smudge): Fix Microwave Heat Haze blackout on forced AA (TheSuperHackers#2374)
  • refactor: Add override keyword to virtual function overrides in GameEngine (TheSuperHackers#2391)
  • unify(logic): Merge game loading related variables and functions from Zero Hour (TheSuperHackers#2444)
  • fix(pathfinder): Implement robust forward insertion sort for PathfindCell::putOnSortedOpenList() (TheSuperHackers#2432)
  • refactor(netpacket): Simplify NetPacket functions for packet buffer writes and size tests (TheSuperHackers#2329)
  • refactor(netcommandmsg): Rename NetCommandMsg::getPackedByteCount to NetCommandMsg::getSizeForNetPacket (TheSuperHackers#2329)
  • refactor(netcommandmsg): Simplify net messages NetAckBothCommandMsg, NetAckStage1CommandMsg, NetAckStage2CommandMsg (TheSuperHackers#2329)
  • chore(network): Add new NetAckCommandMsg (TheSuperHackers#2329)
  • fix(network): Fix constness around NetCommandMsg (TheSuperHackers#2329)

weekly-2026-03-13

13 Mar 09:36
d195e3b

Choose a tag to compare

Changelog

  • bugfix(namekey): Remove hardcoded NameKeyIDs from dummy strings to work with modded files (TheSuperHackers#2349)
  • ci(validate): Update PR validation workflow and valid tags (TheSuperHackers#2426)
  • unify(pathfinder): Move AIPathfind.h and AIPathfind.cpp to Core (TheSuperHackers#2428)
  • chore(replays): Update GeneralsReplays reference to latest (TheSuperHackers#2424)
  • fix(lookat): Fix mouse anchor and direction issue for camera pitch (TheSuperHackers#2421)
  • bugfix(audio): Decouple Particle Cannon audio spawn point from visual beam to restore correct position and fix quiet beam audio (TheSuperHackers#2415)
  • unify(pathfinder): Merge Pathfinder::moveAllies and Pathfinder::findAttackPath from Zero Hour (TheSuperHackers#2341)
  • unify(pathfinder): Merge Pathfinder::moveAlliesDestinationCallback, ::processHierarchicalCell, ::findClosestPath, ::updateGoal (TheSuperHackers#2341)
  • unify(pathfinder): Merge Pathfinder::checkForPossible(), ::processPathfindQueue(), ::examineNeighboringCells(), ::buildHierarchicalPath() (TheSuperHackers#2341)
  • unify(pathfinder): Merge Pathfinder::clientSafeQuickDoesPathExist() and Pathfinder::clientSafeQuickDoesPathExistForUI() from Zero Hour (TheSuperHackers#2341)
  • refactor(random): Simplify code in RandomValue (TheSuperHackers#2370)
  • unify(pathfinder): Merge PathfindLayer::doDebugIcons(), Pathfinder::Classify functions, Pathfinder::checkDestination() and Pathfinder::checkForMovement() (TheSuperHackers#2414)

weekly-2026-03-06

06 Mar 09:34
6b726d7

Choose a tag to compare

Changelog

  • bugfix(heightmap): Fix zagged shapes on steep diagonal terrain (TheSuperHackers#2406)
  • refactor(view): Split contents of W3DView::buildCameraTransform(), W3DView::calcCameraAreaConstraints() (TheSuperHackers#2403)
  • bugfix(gunship): Select Spectre Gunship only on the client that controls the unit (TheSuperHackers#2402)
  • bugfix(ai): Reset jet locomotor to normal when attack locomotor timer expires (TheSuperHackers#2397)
  • build(cmake): Append RTS_BUILD_OUTPUT_SUFFIX to installable targets (TheSuperHackers#2378)
  • unify(pathfinder): Merge PathfindZoneManager() (TheSuperHackers#2404)
  • chore(pathfinder): Remove unused forced refresh calling in PathfindZoneManager::calculateZones() (TheSuperHackers#2404)
  • refactor: Add compatibility macros for override and final keywords and rename conflicting identifiers (TheSuperHackers#2389)
  • refactor(random): Reorder RandomValue function definitions (2) (TheSuperHackers#2405)
  • refactor(dozeraiupdate): Streamline dozer task cancellation logic (TheSuperHackers#2387)
  • refactor(random): Reorder RandomValue function definitions (TheSuperHackers#2384)
  • feat: Implement math CRC calculation utility for logic mismatch detection purposes (TheSuperHackers#2100)
  • bugfix(pathfinder): Fix uninitialized variable in Pathfinder::tightenPathCallback to prevent mismatches (TheSuperHackers#2309)
  • unify(pathfinder): Remove unused argument from PathfindZoneManager::markZonesDirty() (TheSuperHackers#2381)
  • unify(pathfinder): Merge PathfindCell class from Zero Hour (TheSuperHackers#2381)
  • unify(pathfinder): Merge CellTypes and CELL_BRIDGE_IMPASSABLE code from Zero Hour (TheSuperHackers#2381)
  • unify(pathfinder): Merge PathfindCell::setTypeAsObstacle() and PathfindCell::removeObstacle() from Zero Hour (TheSuperHackers#2381)
  • chore(pathfinder): Remove legacy Pathfind debug code from Generals (TheSuperHackers#2381)
  • bugfix(radar): Fix incorrect 2D distance calculation in Radar::tryEvent (TheSuperHackers#2368)
  • refactor(battleplan): Split data off of BattlePlanBonuses class (TheSuperHackers#2335)
  • bugfix(audio): Fix range volume fade of 3D sounds and make it configurable in AudioSettings.ini (TheSuperHackers#2369)
  • fix(view): Implement state for user controlled camera to properly distinguish between scripted and user camera (TheSuperHackers#2363)
  • fix(network): Move TransportMessageHeader to before it is used in NetworkDefs.h (TheSuperHackers#2382)
  • ci(vcpkg): Fix recurring binary cache invalidation from runner image updates (TheSuperHackers#2371)
  • unify(pathfinder): Merge local variable optimizations in PathfindZoneManager::calculateZones() from Zero Hour (TheSuperHackers#2367)
  • fix(pathfinder): Add missing logical block for zone type optimization in PathfindZoneManager::calculateZones() (TheSuperHackers#2360)
  • chore(pathfinder): Remove register variable and use member variable directly in PathfindZoneManager::calculateZones() (TheSuperHackers#2360)
  • chore(pathfinder): Change while loops to for loops in PathfindZoneManager::calculateZones() (TheSuperHackers#2360)
  • chore(pathfinder): Change open braces to be K&R style in PathfindZoneManager::calculateZones() (TheSuperHackers#2360)
  • chore(pathfinder): Change leading spaces to leading tabs in PathfindZoneManager:calculateZones() (TheSuperHackers#2360)
  • tweak(menu): Show mouse and menu immediately when shellmap is disabled (TheSuperHackers#2356)
  • fix(logic): Fix potential null pointer deferences in GameLogicDispatch (TheSuperHackers#2354)
  • tweak(random): Replace InitGameLogicRandom with InitRandom for consistent client and audio seeds (TheSuperHackers#2339)
  • bugfix(audio): Fix particle cannon being inaudible after saveload (TheSuperHackers#2302)
  • fix(headless): Use ParticleSystemManager update instead of reset in headless replay (TheSuperHackers#2219)
  • refactor(view): Change scripted state booleans to enum flags in W3DView (TheSuperHackers#2357)
  • bugfix(partition): Fix inconsistent mine collision behaviour (TheSuperHackers#2208)
  • refactor(view): Simplify code to set location for Replay Camera (TheSuperHackers#2353)
  • fix(view): Call View::forceRedraw() instead of doing tricks to refresh the camera normally (TheSuperHackers#2352)
  • refactor(lookat): Simplify pitch, fov, zoom logic in LookAtTranslator (TheSuperHackers#2351)
  • fix(object): Save and load game object list in correct order (TheSuperHackers#2161)
  • bugfix(registry): Prioritize HKEY_CURRENT_USER registry reads and writes over HKEY_LOCAL_MACHINE to prevent inaccessible data (TheSuperHackers#1844)

weekly-2026-02-27

27 Feb 09:37
78d94fb

Choose a tag to compare

Changelog

  • refactor: Remove redundant void argument from functions (TheSuperHackers#2345)
  • refactor: Simplify unconditional asserts from DEBUG_ASSERTCRASH to DEBUG_CRASH (TheSuperHackers#2343)
  • refactor(preferences): Move OptionPreferences class into separate files (TheSuperHackers#1840)
  • refactor(language): Cleanup GlobalLanguage code and add function GlobalLanguage::getResolutionFontSizeScale() (TheSuperHackers#2338)
  • bugfix(skirmish): Prevent mismatch in Replay playback by restoring correct game seed after restarting a Skirmish game (TheSuperHackers#2270)
  • refactor(pathfinder): Remove unused function Pathfinder::pathDestination() (TheSuperHackers#2308)
  • unify(client): Move several GameClient files to Core (TheSuperHackers#2337)
  • unify(client): Merge DisplayString, GameText, GlobalLanguage, SelectionInfo code (TheSuperHackers#2337)
  • bugfix(player): Fix rounding inaccuracies with money awarded by Cash Bounty (TheSuperHackers#2330)
  • bugfix(behavior): Prevent fallen Angry Mob members from respawning at the Barracks after loading a save (TheSuperHackers#2314)
  • refactor(pathfinder): Cleanup retail compatible insertion sort code (TheSuperHackers#2331)
  • refactor(pathfinder): Implement PathfindCellList class for the pathfindcell closedList (TheSuperHackers#2327)
  • refactor(pathfinder): Implement PathfindCellList class for the pathfindcell openList (TheSuperHackers#2327)
  • bugfix(victory): Save victory status to prevent early exits from resulting in defeat in network matches (TheSuperHackers#2292)
  • fix(netpacket): Fix incorrect improbable return value in NetPacket::GetBufferSizeNeededForCommand() (TheSuperHackers#2328)
  • unify(gui): Move several GUI related files to Core (TheSuperHackers#2332)
  • unify(loadscreen): Merge LoadScreen and related code (TheSuperHackers#2332)
  • fix(loadscreen): Fix missing pointer initialization in constructors of MultiPlayerLoadScreen, GameSpyLoadScreen and remove superfluous code from destructors of LoadScreen classes (TheSuperHackers#2332)
  • unify(mouse): Move Mouse, Keyboard files to Core (TheSuperHackers#2334)
  • unify(mouse): Merge Mouse, Keyboard code (TheSuperHackers#2334)