From 6dd38228dba729e02adfb785e4510401a184416e Mon Sep 17 00:00:00 2001 From: Gynt Date: Thu, 24 Sep 2026 15:19:02 +0200 Subject: [PATCH 001/241] big progress, removing redundant cpp files --- .../exitToScenarioDescriptionMenu.cpp | 19 +++ .../Game/GameCore/isGameHaltingMenuOpen.cpp | 32 ++++ .../Game/GameCore/setTabToSwitchTo.cpp | 21 +++ .../Game/GameCore/setViewOnExitUnk.cpp | 13 ++ .../Game/GameCore/swapBuildMenuTab.cpp | 20 +++ .../switchToScenarioDescriptionMenuView.cpp | 19 +++ .../activateTraderState.cpp | 14 ++ .../calculateTaxBribeExpenseForPlayer.cpp | 17 +++ .../GameStateStructures/clearTribeHotKey.cpp | 20 +++ .../destroyPlayerCompletely.cpp | 28 ++++ .../Game/GameStateStructures/fillWith0xFF.cpp | 23 +++ .../findNextPlayerWithMarketplace.cpp | 22 +++ .../GameStateStructures/getBatchBuyPrice.cpp | 13 ++ .../getBuyPriceForOneUnit.cpp | 13 ++ .../getNumberToDisplayBribeIncome.cpp | 19 +++ .../getNumberToDisplayPlayerTaxIncome.cpp | 19 +++ .../getSalePriceOfGood.cpp | 17 +++ .../GameStateStructures/getSalesPrice.cpp | 15 ++ .../GameStateStructures/getTeamsDifferent.cpp | 20 +++ .../isFullIDEqualsToMinus1.cpp | 19 +++ .../isResourceTypeTradeable.cpp | 22 +++ .../Game/GameStateStructures/isSameTeam.cpp | 17 +++ ...tSomethingBuildingRelatedForAllPlayers.cpp | 18 +++ .../GameStateStructures/resetTraderState.cpp | 20 +++ .../switchPlayerOwnership.cpp | 23 +++ src/OpenSHC/Game/UpdateUnitValueLoss.cpp | 15 ++ src/OpenSHC/Global/PrintToDestination.cpp | 14 ++ ...dateBadBuildingCessPitOrDancingBearUnk.cpp | 17 +++ .../UpdateBadBuildingRackFlogging.cpp | 21 +++ .../Map/Buildings/UpdateBuildingShared1.cpp | 16 ++ .../Buildings/UpdateGoodBuildingGarden.cpp | 24 +++ .../Map/Buildings/UpdateParadeGround2.cpp | 18 +++ .../Map/Buildings/UpdateParadeGround3.cpp | 18 +++ .../Map/Buildings/UpdateParadeGround4.cpp | 18 +++ .../Map/Buildings/UpdatePlacedSiegeTower.cpp | 26 ++++ .../EntityState/activateProjectileEntity.cpp | 24 +++ .../Map/Entities/EntityState/deleteEntity.cpp | 22 +++ .../EntityState/destroyEntitiesPart2.cpp | 19 +++ .../EntityState/getFireEntityIDAtTile.cpp | 27 ++++ .../EntityState/markEntityDestroyed.cpp | 18 +++ .../EntityState/reassignEntitiesOwner.cpp | 19 +++ .../EntityState/tickEntityDecayCounter.cpp | 20 +++ .../IgniteFireAtMiniTile_Convenience.cpp | 15 ++ src/OpenSHC/Map/Entities/SetPlaceOnFire.cpp | 13 ++ .../Map/Entities/UpdateBrazierEntity.cpp | 19 +++ .../constructLandscapeState.cpp | 20 +++ .../getRandomRockImageOffset.cpp | 15 ++ .../Map/LandscapeState/isTreeAdult.cpp | 19 +++ .../isTreeAliveAndMatchingUID.cpp | 16 ++ src/OpenSHC/Map/LandscapeState/resetWind.cpp | 17 +++ .../upgradeTreesAndRocksForMapVersion.cpp | 23 +++ .../isMercRecruitableForBuildingType.cpp | 22 +++ .../isValueInRangeOneToTwenty.cpp | 13 ++ .../MapPropertiesState/mapHasCertainEvent.cpp | 27 ++++ .../openEventTriggerMenu.cpp | 26 ++++ .../sumInvasionEventUnitCount.cpp | 23 +++ .../computeHealthPercentage.cpp | 18 +++ .../bindPathPlanToAlgorithmStateAndReset.cpp | 16 ++ .../PathFindingState/clearAllClimbData.cpp | 18 +++ .../PathFindingState/clearClimbData.cpp | 19 +++ .../getComputationalTileIndex.cpp | 12 ++ .../PathFindingState/getTileInSearchQueue.cpp | 12 ++ .../getYSmallerThanYLimit.cpp | 15 ++ .../retraceAndCommitPathPlan.cpp | 18 +++ ...hLinkageLayerForEachBuildingAtEachTile.cpp | 21 +++ .../Map/TileMapState/clearMoatData.cpp | 21 +++ .../TileMapState/forceFullTileMapRedraw.cpp | 16 ++ .../Map/TileMapState/getUnownedMoatCount.cpp | 21 +++ .../processDamageToBuildingThunk.cpp | 19 +++ ...sEntityDamageToBuildingCollateralThunk.cpp | 15 ++ .../processMapOrientationChange.cpp | 17 +++ .../TileMapState/recountTotalOwnedMoats.cpp | 19 +++ .../Map/TileMapState/resetMoatArray.cpp | 23 +++ .../Map/TileMapState/resetPitchDitchArray.cpp | 23 +++ .../Map/TileMapState/setMapRotation.cpp | 10 ++ .../setMoatOwnerForAllMatching.cpp | 17 +++ .../TileMapState/setMoatVisualStateAtTile.cpp | 16 ++ .../spreadBrazierPlacementAlgorithm.cpp | 17 +++ .../spreadFlagPlacementAlgorithm.cpp | 17 +++ .../Map/TileMapState/toggleFlatView.cpp | 16 ++ ...updateBuildingPlacementRotationPreview.cpp | 19 +++ .../updateMoatCountdownTimers.cpp | 21 +++ src/OpenSHC/Map/Trees/UpdateTree16.cpp | 18 +++ .../Map/Units/CheckUnitProductionPaused.cpp | 18 +++ .../TribesState/Constructor_TribesState.cpp | 23 +++ .../Units/TribesState/addUnitToSelected.cpp | 22 +++ .../Map/Units/TribesState/clearTribe.cpp | 20 +++ .../TribesState/constructTribesState.cpp | 28 ++++ ...SelectionMoveInstructionNoMatchedSpeed.cpp | 21 +++ .../TribesState/markTribeAsAnimalTribe.cpp | 12 ++ .../TribesState/playArcherCommandSpeech.cpp | 25 ++++ .../TribesState/playPatrolCommandSpeech.cpp | 28 ++++ .../TribesState/playTunnelerCommandSpeech.cpp | 23 +++ .../TribesState/playUnitSelectSpeech.cpp | 28 ++++ .../TribesState/playWorkCommandSpeech.cpp | 29 ++++ .../Units/TribesState/popUnitFromTribe.cpp | 20 +++ .../Map/Units/TribesState/queueUnitStance.cpp | 26 ++++ .../reassignOwnerForTribesOfBehaviorType2.cpp | 23 +++ .../Map/Units/TribesState/setCamelSpawnXY.cpp | 22 +++ .../Map/Units/TribesState/setUnitStance.cpp | 22 +++ .../setWhetherTribeContainsAnyUnits.cpp | 20 +++ .../TribesState/storeDeerXAndYinMapInfo.cpp | 22 +++ .../TribesState/storeLionXAndYInMapInfo.cpp | 26 ++++ .../TribesState/tribeCorrespondsWithUID.cpp | 18 +++ .../TribesState/upgradeMapTribesState.cpp | 25 ++++ .../attackInfoHasArch2Building.cpp | 23 +++ .../attackInfoHasHigh2Building.cpp | 28 ++++ .../clearAIInfoLayerOutsideStartZone.cpp | 25 ++++ .../constructTroopValueState.cpp | 18 +++ .../getTileInTargetedBuildingTiles.cpp | 27 ++++ .../TroopValueState/isAttackWaveComplete.cpp | 24 +++ .../ComputeDamageFearFactorBonus.cpp | 17 +++ .../UnitsState/Constructor_UnitsState.cpp | 25 ++++ .../changeDestinationByLeftover.cpp | 19 +++ .../checkIfCitizenUnitIsAliveBasedOnState.cpp | 31 ++++ .../checkUnitHasPropertyBasedOnUnitType.cpp | 18 +++ .../clearHiddenFlagAndUpdatePosition.cpp | 18 +++ .../Map/Units/UnitsState/deselectUnit.cpp | 18 +++ .../Map/Units/UnitsState/extendRallyPoint.cpp | 27 ++++ .../Map/Units/UnitsState/getArmySize.cpp | 17 +++ .../getDestination2EqualsGivenCoordinates.cpp | 22 +++ .../UnitsState/getFirstSelectedUnitID.cpp | 26 ++++ .../hasTunnelerNotFinishedDigging.cpp | 19 +++ .../isComputerManagedNonPeasant.cpp | 30 ++++ ...StopWalkingByClearingPathProgressState.cpp | 18 +++ .../queueClickNavigateMenuOrEscape.cpp | 25 ++++ .../queueDisbandAndAttackCommand2Params.cpp | 25 ++++ .../queueDisbandAndAttackCommand3Params.cpp | 26 ++++ .../queueDisbandAndAttackCommand4Params.cpp | 28 ++++ .../Units/UnitsState/queueUnitTypeCommand.cpp | 25 ++++ .../UnitsState/relayTribeInstruction.cpp | 23 +++ .../Map/Units/UnitsState/returnFalseStub.cpp | 16 ++ .../saveUnitStateBeforeInterruption.cpp | 18 +++ .../selectionContainsEngineersOnly.cpp | 33 ++++ .../selectionContainsOnlyArabAssassins.cpp | 33 ++++ .../selectionContainsShieldmenOnly.cpp | 29 ++++ .../selectionContainsTunnelersOnly.cpp | 29 ++++ .../Units/UnitsState/selectionHasArchers.cpp | 22 +++ .../UnitsState/selectionHasEngineers.cpp | 16 ++ .../setupUnitSharingCurrentTilePosition.cpp | 16 ++ .../Units/UnitsState/sitDownIfStanding.cpp | 20 +++ .../Map/Units/UnitsState/standUpIfSeated.cpp | 20 +++ .../Map/Units/UnitsState/unitIsInMoat.cpp | 22 +++ .../UpdateWorker_ConsiderTakingABreakUnk.cpp | 21 +++ .../SetBuildingsEmployeeCountToValue.cpp | 29 ++++ .../Map/Version/SetDairyCheeseToZero.cpp | 32 ++++ .../SetUndamagedBuildingHealthToValue.cpp | 31 ++++ .../UpdateDestroyedBuildingCountData.cpp | 15 ++ .../Map/Version/UpdateUnitLossData.cpp | 17 +++ .../Map/Version/UpgradeBuildingField1.cpp | 25 ++++ .../Map/Version/UpgradeBuildingField2.cpp | 25 ++++ .../Map/Version/UpgradeBuildingField4.cpp | 24 +++ .../UpgradeClearBuildings1000AndHigher.cpp | 23 +++ .../Map/Version/UpgradeFirst9Buildings.cpp | 21 +++ .../Map/Version/UpgradeKillingPitField.cpp | 28 ++++ .../Version/UpgradeMapLogicToVersion_125.cpp | 21 +++ .../Version/UpgradeMapLogicToVersion_147.cpp | 21 +++ .../UpgradeMapTribesStateVersionTo_142.cpp | 23 +++ ...pgradeMapTribesStateVersionTo_Unknown2.cpp | 21 +++ .../Map/Version/UpgradeMapUnitsTo_112.cpp | 29 ++++ .../Map/Version/UpgradeMapUnitsTo_114.cpp | 26 ++++ .../Map/Version/UpgradeMapUnitsTo_130.cpp | 30 ++++ .../Map/Version/UpgradeMapUnitsTo_149.cpp | 26 ++++ .../Map/Version/UpgradeMapUnitsTo_155.cpp | 26 ++++ .../Map/Version/UpgradeOutpostField.cpp | 30 ++++ .../Version/UpgradeRemoveRocksBeyond1000.cpp | 23 +++ .../Version/UpgradeSetCurrentEntityID3000.cpp | 12 ++ .../UpgradeSolitaryMapBuildingField3.cpp | 29 ++++ .../resetWallAndPitchState.cpp | 28 ++++ .../resetWallPlacementInfo.cpp | 28 ++++ .../Map/WildlifeState/clearWildlifeState.cpp | 17 +++ .../computeTileXOffset.cpp | 13 ++ .../createFloatingTextElement.cpp | 17 +++ .../ViewportRenderState/focusOnCoordinate.cpp | 14 ++ .../resetBatchedRender.cpp | 19 +++ .../resetupViewportThunk.cpp | 14 ++ .../ViewportRenderState/restoreFocusTile.cpp | 13 ++ .../ViewportRenderState/translateXYToTile.cpp | 10 ++ .../ViewportRenderState/xyAreValid.cpp | 17 +++ .../storeWindowRectangleInfoUnk.cpp | 16 ++ .../Synchrony/Actions/ChangeRations.cpp | 15 ++ src/OpenSHC/Synchrony/Actions/ChangeTaxes.cpp | 15 ++ .../Actions/RemovePositionOfPlayer.cpp | 19 +++ .../Actions/SetBuildingProductionType.cpp | 18 +++ .../QueueChangeGameIntensityOrBalance.cpp | 22 +++ .../Synchrony/Commands/_REMOVED_COMMAND1_.cpp | 12 ++ .../clearGameCommandEntry.cpp | 19 +++ ...ompressOrCreateLengthPrefixedPacketUnk.cpp | 19 +++ .../computeSomeHashOnUnitArray.cpp | 18 +++ .../decompressTooLongPacketData.cpp | 21 +++ .../getGameCommandArrayIndex.cpp | 10 ++ .../GameSynchronyState/isAIPlayer.cpp | 20 +++ .../throttledMultiplayerSyncUpdate.cpp | 23 +++ src/OpenSHC/Synchrony/GetPlayerPosition.cpp | 18 +++ src/OpenSHC/Synchrony/ProgressBarRelated.cpp | 22 +++ ...eSpeedAndResourceLackDisplayElementUnk.cpp | 23 +++ .../UI/AppendCreditsClearImageCommand.cpp | 17 +++ src/OpenSHC/UI/AppendCreditsCommand.cpp | 17 +++ .../UI/AppendCreditsListTerminator.cpp | 17 +++ src/OpenSHC/UI/AppendCreditsPauseCommand.cpp | 17 +++ .../UI/AppendCreditsSegmentEndCommand.cpp | 17 +++ .../UI/AppendCreditsSoundStreamCommand.cpp | 21 +++ .../UI/CaptureCurrentTimeToUnknownTime01.cpp | 10 ++ src/OpenSHC/UI/DisableMercPostPortraits.cpp | 10 ++ src/OpenSHC/UI/FindDisplayElementWithID.cpp | 22 +++ .../IfAiGreatestLordGetAiType.cpp | 24 +++ .../AModalDialogIsActiveButIsNotQuitting.cpp | 28 ++++ ...ayElementByIDAndSetForUnlimitedDisplay.cpp | 31 ++++ src/OpenSHC/UI/Helpers/CheckGoldResource.cpp | 27 ++++ .../Helpers/CheckIfEnoughGoldForLadderman.cpp | 19 +++ .../UI/Helpers/CheckIfEnoughGoldForMonk.cpp | 19 +++ .../Helpers/CheckIfEnoughGoldForTunneler.cpp | 19 +++ .../GetIfDisplayElementStateNotZero.cpp | 25 ++++ ...SetEnoughGoldForRequestedUnitToTrueUnk.cpp | 15 ++ .../UI/Helpers/SetTaxesSetting_unknown.cpp | 23 +++ .../SetTutorialBuildingActionState.cpp | 31 ++++ src/OpenSHC/UI/Helpers/SumUnitPoints.cpp | 16 ++ .../UI/HoveredState/clearHoveredState.cpp | 20 +++ .../clearInvalidatedHoverStates.cpp | 37 +++++ src/OpenSHC/UI/LoadTGX_shc_back.cpp | 15 ++ src/OpenSHC/UI/Menu/updateMenuButtons.cpp | 28 ++++ .../MenuHandlerState/setupBuildMenuState.cpp | 20 +++ .../UI/MenuItem/resetMenuItemStateUnk.cpp | 28 ++++ .../UI/MenuItemFunction_General_Unknown.cpp | 10 ++ ...r_BuildMenu_SomeKeepAndGranaryCheckUnk.cpp | 38 +++++ ...RenderFunction_BuildMenu_BuildingIcons.cpp | 32 ++++ ...uildMenu_BuildingKeepSubcategoryButton.cpp | 30 ++++ ...on_BuildMenu_BuildingSubcategoryButton.cpp | 29 ++++ ..._CurrentlySelectedTroopsDeselectHelper.cpp | 24 +++ ...BuildingAndStatusMenu_ArmySwitchButton.cpp | 22 +++ ...ngAndStatusMenu_BuildingHelpTextButton.cpp | 24 +++ ...er_BuildingAndStatusMenu_BuildingSleep.cpp | 35 +++++ ...gAndStatusMenu_MarketMenuChangeButtons.cpp | 26 ++++ ...dingAndStatusMenu_OutpostUnitSelection.cpp | 22 +++ ...atusMenu_PopularityMenuSwitchButtonUnk.cpp | 19 +++ ...Menu_StopBuildingOrPeasantBinkPlayback.cpp | 28 ++++ ...r_BuildingAndStatusMenu_UnknownMin1Unk.cpp | 16 ++ ...uildingAndStatusMenu_Unknown_Countdown.cpp | 19 +++ ...ler_BuildingAndStatusMenu_Unknown_Min1.cpp | 16 ++ ...ngAndStatusMenu_ArmyStatusSwitchButton.cpp | 18 +++ ...sMenu_BarracksAndMercenaryPostHelpText.cpp | 22 +++ ...ngAndStatusMenu_BuildingHelpTextButton.cpp | 32 ++++ ...dStatusMenu_PopularityMenuSwitchButton.cpp | 27 ++++ ...ActionHandler_Chat_SendMessageToPlayer.cpp | 24 +++ ...enuItemActionHandler_Chat_TauntButtons.cpp | 25 ++++ ...eNetworkServiceProvider_ModemTableRows.cpp | 22 +++ ...temActionHandler_DeleteGameRecord_Main.cpp | 32 ++++ ...emActionHandler_DisableArabTroops_Main.cpp | 34 +++++ ...emActionHandler_DisableEuroTroops_Main.cpp | 34 +++++ ...splayScenarioHelpText_AnotherButtonUnk.cpp | 22 +++ ...onHandler_EnterTitleOnGameStart_Button.cpp | 36 +++++ ...NetworkSessions_EnumerateDPlaySessions.cpp | 21 +++ ...ndler_FindingNetworkSessions_TableRows.cpp | 22 +++ ...Handler_General_DisplayConditionalText.cpp | 22 +++ ...RemoveConditionalTextOrReleaseHoverUnk.cpp | 21 +++ ...MenuItemActionHandler_General_Unknown2.cpp | 19 +++ ...nHandler_InGameMenu_UnknownBinkRelated.cpp | 25 ++++ ...derFunction_InGameMenu_MapEventIconUnk.cpp | 28 ++++ ...nuItemRenderFunction_LobbyMenu_Unknown.cpp | 28 ++++ ...nHandler_NetworkOptions_LeaveButtonUnk.cpp | 23 +++ ...emRenderFunction_SaveLoadMap_Scrollbar.cpp | 29 ++++ ...temActionHandler_SaveMap_ReturnKeySave.cpp | 26 ++++ ...uItemRenderFunction_SelectCrusade_Main.cpp | 30 ++++ ...tionHandler_UnusedOldTitleMenu_General.cpp | 19 +++ ...tionHandler_UnusedWinCondition_Options.cpp | 35 +++++ .../UI/MenuModalComposition/findModalMenu.cpp | 31 ++++ .../loadAllMenuElementsOfMenuModals.cpp | 28 ++++ ...RenderFunction_CreateOrTriggerInvasion.cpp | 16 ++ ...enuModalRenderFunction_DebugDataAiInfo.cpp | 14 ++ ...derFunction_DebugDataCurrentPlayerData.cpp | 15 ++ ...nuModalRenderFunction_DebugDataMapData.cpp | 15 ++ ...lRenderFunction_DebugDataMousePointing.cpp | 15 ++ ...nuModalRenderFunction_DebugDataNetwork.cpp | 15 ++ ...ModalRenderFunction_DebugDataSplitInfo.cpp | 15 ++ ...uModalRenderFunction_DebugDataUnitData.cpp | 15 ++ ...dalRenderFunction_DebugDataZoneDataUnk.cpp | 15 ++ .../MenuModalRenderFunction_DisableTroops.cpp | 16 ++ .../MenuModalRenderFunction_DisableWeapon.cpp | 16 ++ ...dalRenderFunction_DisplayAiLordMessage.cpp | 14 ++ ...alRenderFunction_EnterTitleOnGameStart.cpp | 16 ++ ...enuModalRenderFunction_GameplayOptions.cpp | 16 ++ ...MenuModalRenderFunction_NetworkOptions.cpp | 16 ++ ...MenuModalRenderFunction_OnlineQuitGame.cpp | 16 ++ .../MenuModalRenderFunction_OptionsMenu.cpp | 16 ++ ...nderFunction_SkirmishConnectionOptions.cpp | 16 ++ ...odalRenderFunction_SkirmishPlayOptions.cpp | 16 ++ .../MenuModalRenderFunction_SoundOptions.cpp | 16 ++ .../UI/MenuModalRenderFunction_StartGoods.cpp | 16 ++ .../UI/MenuModalRenderFunction_TextEditor.cpp | 14 ++ ...MenuModalRenderFunction_TraderSettings.cpp | 16 ++ .../MenuModalRenderFunction_TriggerEvent.cpp | 16 ++ ...uModalRenderFunction_TutorialBox_Thunk.cpp | 15 ++ ...rFunction_UnusedSiegeAttackingForceUnk.cpp | 16 ++ .../clearModalDialog2to6.cpp | 18 +++ .../MenuView_CampaignUnk_DoEveryFrame.cpp | 34 +++++ .../MenuView_CrusadeMissionIntro_Prepare.cpp | 27 ++++ .../MenuView_EditScenario_Prepare.cpp | 29 ++++ ..._General_DoEveryFrame_FirstGfxCentered.cpp | 28 ++++ ...nuView_General_DoInitial_OnlySetMenuXY.cpp | 30 ++++ ...w_General_Prepare_SwordShieldAndBorder.cpp | 26 ++++ .../MenuView_IntroLogos_DoInitial.cpp | 32 ++++ .../MenuView_MapEditorLandscaping_Prepare.cpp | 27 ++++ .../MenuView_NewMapMapsize_Prepare.cpp | 24 +++ .../MenuView_NewMapMaptype_Prepare.cpp | 26 ++++ .../MenuView_RankingGames_Prepare.cpp | 30 ++++ ...w_Unknown26_CampaignRelatedUnk_Prepare.cpp | 23 +++ ...iew_UnusedChooseAvailableKeeps_Prepare.cpp | 23 +++ ...iew_UnusedDemoBuyItScreen_DoEveryFrame.cpp | 30 ++++ .../MenuView_UnusedExtremeAd_Prepare.cpp | 32 ++++ ...View_UnusedHelpTextEditor_DoEveryFrame.cpp | 21 +++ .../MenuView_UnusedHelpTextEditor_Prepare.cpp | 33 ++++ ...View_UnusedSomeMissionStartUnk_Prepare.cpp | 31 ++++ .../setMapPropertyDependingOnMapSize.cpp | 21 +++ .../setTileColorsDependingOnMapSize.cpp | 20 +++ .../MinimapViewState/triggerMinimapRedraw.cpp | 18 +++ src/OpenSHC/UI/PlayAMessageFromAI.cpp | 26 ++++ .../AlphaAndButtonSurface/freeMemory.cpp | 18 +++ .../renderNonInteractingButtonBackground.cpp | 24 +++ .../ButtonGmData/getPictureNumberInGm.cpp | 22 +++ .../PencilRenderCore/setupPencilSurface.cpp | 30 ++++ .../RenderBuildingMenu_RecruitingBuilding.cpp | 17 +++ .../RenderInGameChatDisplayElement.cpp | 17 +++ .../UI/Rendering/RenderMenuGfxHelper.cpp | 19 +++ .../RenderNoRushDisplayElementUnk.cpp | 141 ++++++++++++++++++ .../RenderNoTreeGrowthTextDisplayElement.cpp | 23 +++ .../RenderResourceMissing1DisplayElement.cpp | 17 +++ .../RenderResourceMissing2DisplayElement.cpp | 17 +++ .../RenderUnknownDisplayElement7.cpp | 24 +++ .../CheckGfxResourceExists.cpp | 28 ++++ ...eckIfGfxTgxStartsWithTransparentPixels.cpp | 23 +++ ...eMapSurfaceHeightRangeFromTemporaryUnk.cpp | 16 ++ .../setActiveMenuTabIndexToZero.cpp | 12 ++ .../setMapSurfaceHeightRange.cpp | 15 ++ .../setMapSurfaceHeightRangeUnk.cpp | 16 ++ .../TextureRenderCore/setMenuTabIndexUnk.cpp | 15 ++ .../TextureRenderCore/setRenderingRect.cpp | 18 +++ .../setRenderingRectToGameResolution.cpp | 20 +++ .../setScreenMenuSurfaceHeightRange.cpp | 16 ++ ...reenMenuSurfaceHeightRangeToResolution.cpp | 18 +++ .../temporarySaveMapSurfaceHeightRangeUnk.cpp | 16 ++ .../transformTgxCompressedImageToRGB565.cpp | 22 +++ .../transformUncompressedImageToRGB565.cpp | 20 +++ ...UncompressedImageWithMarkerUnkToRGB565.cpp | 19 +++ .../TogglePlayerPingDisplayElementUnk.cpp | 23 +++ .../WindowAndDirectDraw/cleanDirectDraw.cpp | 20 +++ .../finalizeDirectDrawShutdown.cpp | 20 +++ src/OpenSHC/UI/RestoreScenarioGold.cpp | 14 ++ .../UI/SetActiveCreditsSequenceIndex.cpp | 15 ++ .../UI/SetTutorialHintActiveWithTimestamp.cpp | 15 ++ .../UI/ShowProgressBarSaveLoadDialog.cpp | 22 +++ src/OpenSHC/UI/TacticalPowersFill.cpp | 18 +++ src/OpenSHC/Util/Timing/Stopwatch/start.cpp | 20 +++ src/OpenSHC/Util/Timing/Stopwatch/stop.cpp | 25 ++++ 353 files changed, 7590 insertions(+) create mode 100644 src/OpenSHC/Game/GameCore/exitToScenarioDescriptionMenu.cpp create mode 100644 src/OpenSHC/Game/GameCore/isGameHaltingMenuOpen.cpp create mode 100644 src/OpenSHC/Game/GameCore/setTabToSwitchTo.cpp create mode 100644 src/OpenSHC/Game/GameCore/setViewOnExitUnk.cpp create mode 100644 src/OpenSHC/Game/GameCore/swapBuildMenuTab.cpp create mode 100644 src/OpenSHC/Game/GameCore/switchToScenarioDescriptionMenuView.cpp create mode 100644 src/OpenSHC/Game/GameStateStructures/activateTraderState.cpp create mode 100644 src/OpenSHC/Game/GameStateStructures/calculateTaxBribeExpenseForPlayer.cpp create mode 100644 src/OpenSHC/Game/GameStateStructures/clearTribeHotKey.cpp create mode 100644 src/OpenSHC/Game/GameStateStructures/destroyPlayerCompletely.cpp create mode 100644 src/OpenSHC/Game/GameStateStructures/fillWith0xFF.cpp create mode 100644 src/OpenSHC/Game/GameStateStructures/findNextPlayerWithMarketplace.cpp create mode 100644 src/OpenSHC/Game/GameStateStructures/getBatchBuyPrice.cpp create mode 100644 src/OpenSHC/Game/GameStateStructures/getBuyPriceForOneUnit.cpp create mode 100644 src/OpenSHC/Game/GameStateStructures/getNumberToDisplayBribeIncome.cpp create mode 100644 src/OpenSHC/Game/GameStateStructures/getNumberToDisplayPlayerTaxIncome.cpp create mode 100644 src/OpenSHC/Game/GameStateStructures/getSalePriceOfGood.cpp create mode 100644 src/OpenSHC/Game/GameStateStructures/getSalesPrice.cpp create mode 100644 src/OpenSHC/Game/GameStateStructures/getTeamsDifferent.cpp create mode 100644 src/OpenSHC/Game/GameStateStructures/isFullIDEqualsToMinus1.cpp create mode 100644 src/OpenSHC/Game/GameStateStructures/isResourceTypeTradeable.cpp create mode 100644 src/OpenSHC/Game/GameStateStructures/isSameTeam.cpp create mode 100644 src/OpenSHC/Game/GameStateStructures/resetSomethingBuildingRelatedForAllPlayers.cpp create mode 100644 src/OpenSHC/Game/GameStateStructures/resetTraderState.cpp create mode 100644 src/OpenSHC/Game/GameStateStructures/switchPlayerOwnership.cpp create mode 100644 src/OpenSHC/Game/UpdateUnitValueLoss.cpp create mode 100644 src/OpenSHC/Global/PrintToDestination.cpp create mode 100644 src/OpenSHC/Map/Buildings/UpdateBadBuildingCessPitOrDancingBearUnk.cpp create mode 100644 src/OpenSHC/Map/Buildings/UpdateBadBuildingRackFlogging.cpp create mode 100644 src/OpenSHC/Map/Buildings/UpdateBuildingShared1.cpp create mode 100644 src/OpenSHC/Map/Buildings/UpdateGoodBuildingGarden.cpp create mode 100644 src/OpenSHC/Map/Buildings/UpdateParadeGround2.cpp create mode 100644 src/OpenSHC/Map/Buildings/UpdateParadeGround3.cpp create mode 100644 src/OpenSHC/Map/Buildings/UpdateParadeGround4.cpp create mode 100644 src/OpenSHC/Map/Buildings/UpdatePlacedSiegeTower.cpp create mode 100644 src/OpenSHC/Map/Entities/EntityState/activateProjectileEntity.cpp create mode 100644 src/OpenSHC/Map/Entities/EntityState/deleteEntity.cpp create mode 100644 src/OpenSHC/Map/Entities/EntityState/destroyEntitiesPart2.cpp create mode 100644 src/OpenSHC/Map/Entities/EntityState/getFireEntityIDAtTile.cpp create mode 100644 src/OpenSHC/Map/Entities/EntityState/markEntityDestroyed.cpp create mode 100644 src/OpenSHC/Map/Entities/EntityState/reassignEntitiesOwner.cpp create mode 100644 src/OpenSHC/Map/Entities/EntityState/tickEntityDecayCounter.cpp create mode 100644 src/OpenSHC/Map/Entities/IgniteFireAtMiniTile_Convenience.cpp create mode 100644 src/OpenSHC/Map/Entities/SetPlaceOnFire.cpp create mode 100644 src/OpenSHC/Map/Entities/UpdateBrazierEntity.cpp create mode 100644 src/OpenSHC/Map/LandscapeState/constructLandscapeState.cpp create mode 100644 src/OpenSHC/Map/LandscapeState/getRandomRockImageOffset.cpp create mode 100644 src/OpenSHC/Map/LandscapeState/isTreeAdult.cpp create mode 100644 src/OpenSHC/Map/LandscapeState/isTreeAliveAndMatchingUID.cpp create mode 100644 src/OpenSHC/Map/LandscapeState/resetWind.cpp create mode 100644 src/OpenSHC/Map/LandscapeState/upgradeTreesAndRocksForMapVersion.cpp create mode 100644 src/OpenSHC/Map/MapPropertiesState/isMercRecruitableForBuildingType.cpp create mode 100644 src/OpenSHC/Map/MapPropertiesState/isValueInRangeOneToTwenty.cpp create mode 100644 src/OpenSHC/Map/MapPropertiesState/mapHasCertainEvent.cpp create mode 100644 src/OpenSHC/Map/MapPropertiesState/openEventTriggerMenu.cpp create mode 100644 src/OpenSHC/Map/MapPropertiesState/sumInvasionEventUnitCount.cpp create mode 100644 src/OpenSHC/Map/Navigation/DirectionAlgorithmState/computeHealthPercentage.cpp create mode 100644 src/OpenSHC/Map/Navigation/PathFindingState/bindPathPlanToAlgorithmStateAndReset.cpp create mode 100644 src/OpenSHC/Map/Navigation/PathFindingState/clearAllClimbData.cpp create mode 100644 src/OpenSHC/Map/Navigation/PathFindingState/clearClimbData.cpp create mode 100644 src/OpenSHC/Map/Navigation/PathFindingState/getComputationalTileIndex.cpp create mode 100644 src/OpenSHC/Map/Navigation/PathFindingState/getTileInSearchQueue.cpp create mode 100644 src/OpenSHC/Map/Navigation/PathFindingState/getYSmallerThanYLimit.cpp create mode 100644 src/OpenSHC/Map/Navigation/PathFindingState/retraceAndCommitPathPlan.cpp create mode 100644 src/OpenSHC/Map/Navigation/PathFindingState/updatePathLinkageLayerForEachBuildingAtEachTile.cpp create mode 100644 src/OpenSHC/Map/TileMapState/clearMoatData.cpp create mode 100644 src/OpenSHC/Map/TileMapState/forceFullTileMapRedraw.cpp create mode 100644 src/OpenSHC/Map/TileMapState/getUnownedMoatCount.cpp create mode 100644 src/OpenSHC/Map/TileMapState/processDamageToBuildingThunk.cpp create mode 100644 src/OpenSHC/Map/TileMapState/processEntityDamageToBuildingCollateralThunk.cpp create mode 100644 src/OpenSHC/Map/TileMapState/processMapOrientationChange.cpp create mode 100644 src/OpenSHC/Map/TileMapState/recountTotalOwnedMoats.cpp create mode 100644 src/OpenSHC/Map/TileMapState/resetMoatArray.cpp create mode 100644 src/OpenSHC/Map/TileMapState/resetPitchDitchArray.cpp create mode 100644 src/OpenSHC/Map/TileMapState/setMapRotation.cpp create mode 100644 src/OpenSHC/Map/TileMapState/setMoatOwnerForAllMatching.cpp create mode 100644 src/OpenSHC/Map/TileMapState/setMoatVisualStateAtTile.cpp create mode 100644 src/OpenSHC/Map/TileMapState/spreadBrazierPlacementAlgorithm.cpp create mode 100644 src/OpenSHC/Map/TileMapState/spreadFlagPlacementAlgorithm.cpp create mode 100644 src/OpenSHC/Map/TileMapState/toggleFlatView.cpp create mode 100644 src/OpenSHC/Map/TileMapState/updateBuildingPlacementRotationPreview.cpp create mode 100644 src/OpenSHC/Map/TileMapState/updateMoatCountdownTimers.cpp create mode 100644 src/OpenSHC/Map/Trees/UpdateTree16.cpp create mode 100644 src/OpenSHC/Map/Units/CheckUnitProductionPaused.cpp create mode 100644 src/OpenSHC/Map/Units/TribesState/Constructor_TribesState.cpp create mode 100644 src/OpenSHC/Map/Units/TribesState/addUnitToSelected.cpp create mode 100644 src/OpenSHC/Map/Units/TribesState/clearTribe.cpp create mode 100644 src/OpenSHC/Map/Units/TribesState/constructTribesState.cpp create mode 100644 src/OpenSHC/Map/Units/TribesState/giveUnitSelectionMoveInstructionNoMatchedSpeed.cpp create mode 100644 src/OpenSHC/Map/Units/TribesState/markTribeAsAnimalTribe.cpp create mode 100644 src/OpenSHC/Map/Units/TribesState/playArcherCommandSpeech.cpp create mode 100644 src/OpenSHC/Map/Units/TribesState/playPatrolCommandSpeech.cpp create mode 100644 src/OpenSHC/Map/Units/TribesState/playTunnelerCommandSpeech.cpp create mode 100644 src/OpenSHC/Map/Units/TribesState/playUnitSelectSpeech.cpp create mode 100644 src/OpenSHC/Map/Units/TribesState/playWorkCommandSpeech.cpp create mode 100644 src/OpenSHC/Map/Units/TribesState/popUnitFromTribe.cpp create mode 100644 src/OpenSHC/Map/Units/TribesState/queueUnitStance.cpp create mode 100644 src/OpenSHC/Map/Units/TribesState/reassignOwnerForTribesOfBehaviorType2.cpp create mode 100644 src/OpenSHC/Map/Units/TribesState/setCamelSpawnXY.cpp create mode 100644 src/OpenSHC/Map/Units/TribesState/setUnitStance.cpp create mode 100644 src/OpenSHC/Map/Units/TribesState/setWhetherTribeContainsAnyUnits.cpp create mode 100644 src/OpenSHC/Map/Units/TribesState/storeDeerXAndYinMapInfo.cpp create mode 100644 src/OpenSHC/Map/Units/TribesState/storeLionXAndYInMapInfo.cpp create mode 100644 src/OpenSHC/Map/Units/TribesState/tribeCorrespondsWithUID.cpp create mode 100644 src/OpenSHC/Map/Units/TribesState/upgradeMapTribesState.cpp create mode 100644 src/OpenSHC/Map/Units/TroopValueState/attackInfoHasArch2Building.cpp create mode 100644 src/OpenSHC/Map/Units/TroopValueState/attackInfoHasHigh2Building.cpp create mode 100644 src/OpenSHC/Map/Units/TroopValueState/clearAIInfoLayerOutsideStartZone.cpp create mode 100644 src/OpenSHC/Map/Units/TroopValueState/constructTroopValueState.cpp create mode 100644 src/OpenSHC/Map/Units/TroopValueState/getTileInTargetedBuildingTiles.cpp create mode 100644 src/OpenSHC/Map/Units/TroopValueState/isAttackWaveComplete.cpp create mode 100644 src/OpenSHC/Map/Units/UnitsState/ComputeDamageFearFactorBonus.cpp create mode 100644 src/OpenSHC/Map/Units/UnitsState/Constructor_UnitsState.cpp create mode 100644 src/OpenSHC/Map/Units/UnitsState/changeDestinationByLeftover.cpp create mode 100644 src/OpenSHC/Map/Units/UnitsState/checkIfCitizenUnitIsAliveBasedOnState.cpp create mode 100644 src/OpenSHC/Map/Units/UnitsState/checkUnitHasPropertyBasedOnUnitType.cpp create mode 100644 src/OpenSHC/Map/Units/UnitsState/clearHiddenFlagAndUpdatePosition.cpp create mode 100644 src/OpenSHC/Map/Units/UnitsState/deselectUnit.cpp create mode 100644 src/OpenSHC/Map/Units/UnitsState/extendRallyPoint.cpp create mode 100644 src/OpenSHC/Map/Units/UnitsState/getArmySize.cpp create mode 100644 src/OpenSHC/Map/Units/UnitsState/getDestination2EqualsGivenCoordinates.cpp create mode 100644 src/OpenSHC/Map/Units/UnitsState/getFirstSelectedUnitID.cpp create mode 100644 src/OpenSHC/Map/Units/UnitsState/hasTunnelerNotFinishedDigging.cpp create mode 100644 src/OpenSHC/Map/Units/UnitsState/isComputerManagedNonPeasant.cpp create mode 100644 src/OpenSHC/Map/Units/UnitsState/makeUnitStopWalkingByClearingPathProgressState.cpp create mode 100644 src/OpenSHC/Map/Units/UnitsState/queueClickNavigateMenuOrEscape.cpp create mode 100644 src/OpenSHC/Map/Units/UnitsState/queueDisbandAndAttackCommand2Params.cpp create mode 100644 src/OpenSHC/Map/Units/UnitsState/queueDisbandAndAttackCommand3Params.cpp create mode 100644 src/OpenSHC/Map/Units/UnitsState/queueDisbandAndAttackCommand4Params.cpp create mode 100644 src/OpenSHC/Map/Units/UnitsState/queueUnitTypeCommand.cpp create mode 100644 src/OpenSHC/Map/Units/UnitsState/relayTribeInstruction.cpp create mode 100644 src/OpenSHC/Map/Units/UnitsState/returnFalseStub.cpp create mode 100644 src/OpenSHC/Map/Units/UnitsState/saveUnitStateBeforeInterruption.cpp create mode 100644 src/OpenSHC/Map/Units/UnitsState/selectionContainsEngineersOnly.cpp create mode 100644 src/OpenSHC/Map/Units/UnitsState/selectionContainsOnlyArabAssassins.cpp create mode 100644 src/OpenSHC/Map/Units/UnitsState/selectionContainsShieldmenOnly.cpp create mode 100644 src/OpenSHC/Map/Units/UnitsState/selectionContainsTunnelersOnly.cpp create mode 100644 src/OpenSHC/Map/Units/UnitsState/selectionHasArchers.cpp create mode 100644 src/OpenSHC/Map/Units/UnitsState/selectionHasEngineers.cpp create mode 100644 src/OpenSHC/Map/Units/UnitsState/setupUnitSharingCurrentTilePosition.cpp create mode 100644 src/OpenSHC/Map/Units/UnitsState/sitDownIfStanding.cpp create mode 100644 src/OpenSHC/Map/Units/UnitsState/standUpIfSeated.cpp create mode 100644 src/OpenSHC/Map/Units/UnitsState/unitIsInMoat.cpp create mode 100644 src/OpenSHC/Map/Units/UpdateWorker_ConsiderTakingABreakUnk.cpp create mode 100644 src/OpenSHC/Map/Version/SetBuildingsEmployeeCountToValue.cpp create mode 100644 src/OpenSHC/Map/Version/SetDairyCheeseToZero.cpp create mode 100644 src/OpenSHC/Map/Version/SetUndamagedBuildingHealthToValue.cpp create mode 100644 src/OpenSHC/Map/Version/UpdateDestroyedBuildingCountData.cpp create mode 100644 src/OpenSHC/Map/Version/UpdateUnitLossData.cpp create mode 100644 src/OpenSHC/Map/Version/UpgradeBuildingField1.cpp create mode 100644 src/OpenSHC/Map/Version/UpgradeBuildingField2.cpp create mode 100644 src/OpenSHC/Map/Version/UpgradeBuildingField4.cpp create mode 100644 src/OpenSHC/Map/Version/UpgradeClearBuildings1000AndHigher.cpp create mode 100644 src/OpenSHC/Map/Version/UpgradeFirst9Buildings.cpp create mode 100644 src/OpenSHC/Map/Version/UpgradeKillingPitField.cpp create mode 100644 src/OpenSHC/Map/Version/UpgradeMapLogicToVersion_125.cpp create mode 100644 src/OpenSHC/Map/Version/UpgradeMapLogicToVersion_147.cpp create mode 100644 src/OpenSHC/Map/Version/UpgradeMapTribesStateVersionTo_142.cpp create mode 100644 src/OpenSHC/Map/Version/UpgradeMapTribesStateVersionTo_Unknown2.cpp create mode 100644 src/OpenSHC/Map/Version/UpgradeMapUnitsTo_112.cpp create mode 100644 src/OpenSHC/Map/Version/UpgradeMapUnitsTo_114.cpp create mode 100644 src/OpenSHC/Map/Version/UpgradeMapUnitsTo_130.cpp create mode 100644 src/OpenSHC/Map/Version/UpgradeMapUnitsTo_149.cpp create mode 100644 src/OpenSHC/Map/Version/UpgradeMapUnitsTo_155.cpp create mode 100644 src/OpenSHC/Map/Version/UpgradeOutpostField.cpp create mode 100644 src/OpenSHC/Map/Version/UpgradeRemoveRocksBeyond1000.cpp create mode 100644 src/OpenSHC/Map/Version/UpgradeSetCurrentEntityID3000.cpp create mode 100644 src/OpenSHC/Map/Version/UpgradeSolitaryMapBuildingField3.cpp create mode 100644 src/OpenSHC/Map/WallAndPitchState/resetWallAndPitchState.cpp create mode 100644 src/OpenSHC/Map/WallAndPitchState/resetWallPlacementInfo.cpp create mode 100644 src/OpenSHC/Map/WildlifeState/clearWildlifeState.cpp create mode 100644 src/OpenSHC/Rendering/ViewportRenderState/computeTileXOffset.cpp create mode 100644 src/OpenSHC/Rendering/ViewportRenderState/createFloatingTextElement.cpp create mode 100644 src/OpenSHC/Rendering/ViewportRenderState/focusOnCoordinate.cpp create mode 100644 src/OpenSHC/Rendering/ViewportRenderState/resetBatchedRender.cpp create mode 100644 src/OpenSHC/Rendering/ViewportRenderState/resetupViewportThunk.cpp create mode 100644 src/OpenSHC/Rendering/ViewportRenderState/restoreFocusTile.cpp create mode 100644 src/OpenSHC/Rendering/ViewportRenderState/translateXYToTile.cpp create mode 100644 src/OpenSHC/Rendering/ViewportRenderState/xyAreValid.cpp create mode 100644 src/OpenSHC/Rendering/WindowInformation/storeWindowRectangleInfoUnk.cpp create mode 100644 src/OpenSHC/Synchrony/Actions/ChangeRations.cpp create mode 100644 src/OpenSHC/Synchrony/Actions/ChangeTaxes.cpp create mode 100644 src/OpenSHC/Synchrony/Actions/RemovePositionOfPlayer.cpp create mode 100644 src/OpenSHC/Synchrony/Actions/SetBuildingProductionType.cpp create mode 100644 src/OpenSHC/Synchrony/Commands/QueueChangeGameIntensityOrBalance.cpp create mode 100644 src/OpenSHC/Synchrony/Commands/_REMOVED_COMMAND1_.cpp create mode 100644 src/OpenSHC/Synchrony/GameSynchronyState/clearGameCommandEntry.cpp create mode 100644 src/OpenSHC/Synchrony/GameSynchronyState/compressOrCreateLengthPrefixedPacketUnk.cpp create mode 100644 src/OpenSHC/Synchrony/GameSynchronyState/computeSomeHashOnUnitArray.cpp create mode 100644 src/OpenSHC/Synchrony/GameSynchronyState/decompressTooLongPacketData.cpp create mode 100644 src/OpenSHC/Synchrony/GameSynchronyState/getGameCommandArrayIndex.cpp create mode 100644 src/OpenSHC/Synchrony/GameSynchronyState/isAIPlayer.cpp create mode 100644 src/OpenSHC/Synchrony/GameSynchronyState/throttledMultiplayerSyncUpdate.cpp create mode 100644 src/OpenSHC/Synchrony/GetPlayerPosition.cpp create mode 100644 src/OpenSHC/Synchrony/ProgressBarRelated.cpp create mode 100644 src/OpenSHC/UI/ActivateGameSpeedAndResourceLackDisplayElementUnk.cpp create mode 100644 src/OpenSHC/UI/AppendCreditsClearImageCommand.cpp create mode 100644 src/OpenSHC/UI/AppendCreditsCommand.cpp create mode 100644 src/OpenSHC/UI/AppendCreditsListTerminator.cpp create mode 100644 src/OpenSHC/UI/AppendCreditsPauseCommand.cpp create mode 100644 src/OpenSHC/UI/AppendCreditsSegmentEndCommand.cpp create mode 100644 src/OpenSHC/UI/AppendCreditsSoundStreamCommand.cpp create mode 100644 src/OpenSHC/UI/CaptureCurrentTimeToUnknownTime01.cpp create mode 100644 src/OpenSHC/UI/DisableMercPostPortraits.cpp create mode 100644 src/OpenSHC/UI/FindDisplayElementWithID.cpp create mode 100644 src/OpenSHC/UI/GreatestLord/IfAiGreatestLordGetAiType.cpp create mode 100644 src/OpenSHC/UI/Helpers/AModalDialogIsActiveButIsNotQuitting.cpp create mode 100644 src/OpenSHC/UI/Helpers/CheckDisplayElementByIDAndSetForUnlimitedDisplay.cpp create mode 100644 src/OpenSHC/UI/Helpers/CheckGoldResource.cpp create mode 100644 src/OpenSHC/UI/Helpers/CheckIfEnoughGoldForLadderman.cpp create mode 100644 src/OpenSHC/UI/Helpers/CheckIfEnoughGoldForMonk.cpp create mode 100644 src/OpenSHC/UI/Helpers/CheckIfEnoughGoldForTunneler.cpp create mode 100644 src/OpenSHC/UI/Helpers/GetIfDisplayElementStateNotZero.cpp create mode 100644 src/OpenSHC/UI/Helpers/SetEnoughGoldForRequestedUnitToTrueUnk.cpp create mode 100644 src/OpenSHC/UI/Helpers/SetTaxesSetting_unknown.cpp create mode 100644 src/OpenSHC/UI/Helpers/SetTutorialBuildingActionState.cpp create mode 100644 src/OpenSHC/UI/Helpers/SumUnitPoints.cpp create mode 100644 src/OpenSHC/UI/HoveredState/clearHoveredState.cpp create mode 100644 src/OpenSHC/UI/HoveredState/clearInvalidatedHoverStates.cpp create mode 100644 src/OpenSHC/UI/LoadTGX_shc_back.cpp create mode 100644 src/OpenSHC/UI/Menu/updateMenuButtons.cpp create mode 100644 src/OpenSHC/UI/MenuHandlerState/setupBuildMenuState.cpp create mode 100644 src/OpenSHC/UI/MenuItem/resetMenuItemStateUnk.cpp create mode 100644 src/OpenSHC/UI/MenuItemFunction_General_Unknown.cpp create mode 100644 src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemActionHandler_BuildMenu_SomeKeepAndGranaryCheckUnk.cpp create mode 100644 src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_BuildingIcons.cpp create mode 100644 src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_BuildingKeepSubcategoryButton.cpp create mode 100644 src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_BuildingSubcategoryButton.cpp create mode 100644 src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_CurrentlySelectedTroopsDeselectHelper.cpp create mode 100644 src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_ArmySwitchButton.cpp create mode 100644 src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_BuildingHelpTextButton.cpp create mode 100644 src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_BuildingSleep.cpp create mode 100644 src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_MarketMenuChangeButtons.cpp create mode 100644 src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_OutpostUnitSelection.cpp create mode 100644 src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_PopularityMenuSwitchButtonUnk.cpp create mode 100644 src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_StopBuildingOrPeasantBinkPlayback.cpp create mode 100644 src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_UnknownMin1Unk.cpp create mode 100644 src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_Unknown_Countdown.cpp create mode 100644 src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_Unknown_Min1.cpp create mode 100644 src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemRenderFunction_BuildingAndStatusMenu_ArmyStatusSwitchButton.cpp create mode 100644 src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemRenderFunction_BuildingAndStatusMenu_BarracksAndMercenaryPostHelpText.cpp create mode 100644 src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemRenderFunction_BuildingAndStatusMenu_BuildingHelpTextButton.cpp create mode 100644 src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemRenderFunction_BuildingAndStatusMenu_PopularityMenuSwitchButton.cpp create mode 100644 src/OpenSHC/UI/MenuItems/Chat/MenuItemActionHandler_Chat_SendMessageToPlayer.cpp create mode 100644 src/OpenSHC/UI/MenuItems/Chat/MenuItemActionHandler_Chat_TauntButtons.cpp create mode 100644 src/OpenSHC/UI/MenuItems/ChooseNetworkServiceProvider/MenuItemActionHandler_ChooseNetworkServiceProvider_ModemTableRows.cpp create mode 100644 src/OpenSHC/UI/MenuItems/DeleteGameRecord/MenuItemActionHandler_DeleteGameRecord_Main.cpp create mode 100644 src/OpenSHC/UI/MenuItems/DisableArabTroops/MenuItemActionHandler_DisableArabTroops_Main.cpp create mode 100644 src/OpenSHC/UI/MenuItems/DisableEuroTroops/MenuItemActionHandler_DisableEuroTroops_Main.cpp create mode 100644 src/OpenSHC/UI/MenuItems/DisplayScenarioHelpText/MenuItemRenderFunction_DisplayScenarioHelpText_AnotherButtonUnk.cpp create mode 100644 src/OpenSHC/UI/MenuItems/EnterTitleOnGameStart/MenuItemActionHandler_EnterTitleOnGameStart_Button.cpp create mode 100644 src/OpenSHC/UI/MenuItems/FindingNetworkSessions/MenuItemActionHandler_FindingNetworkSessions_EnumerateDPlaySessions.cpp create mode 100644 src/OpenSHC/UI/MenuItems/FindingNetworkSessions/MenuItemActionHandler_FindingNetworkSessions_TableRows.cpp create mode 100644 src/OpenSHC/UI/MenuItems/General/MenuItemActionHandler_General_DisplayConditionalText.cpp create mode 100644 src/OpenSHC/UI/MenuItems/General/MenuItemActionHandler_General_RemoveConditionalTextOrReleaseHoverUnk.cpp create mode 100644 src/OpenSHC/UI/MenuItems/General/MenuItemActionHandler_General_Unknown2.cpp create mode 100644 src/OpenSHC/UI/MenuItems/InGameMenu/MenuItemActionHandler_InGameMenu_UnknownBinkRelated.cpp create mode 100644 src/OpenSHC/UI/MenuItems/InGameMenu/MenuItemRenderFunction_InGameMenu_MapEventIconUnk.cpp create mode 100644 src/OpenSHC/UI/MenuItems/LobbyMenu/MenuItemRenderFunction_LobbyMenu_Unknown.cpp create mode 100644 src/OpenSHC/UI/MenuItems/NetworkOptions/MenuItemActionHandler_NetworkOptions_LeaveButtonUnk.cpp create mode 100644 src/OpenSHC/UI/MenuItems/SaveLoadMap/MenuItemRenderFunction_SaveLoadMap_Scrollbar.cpp create mode 100644 src/OpenSHC/UI/MenuItems/SaveMap/MenuItemActionHandler_SaveMap_ReturnKeySave.cpp create mode 100644 src/OpenSHC/UI/MenuItems/SelectCrusade/MenuItemRenderFunction_SelectCrusade_Main.cpp create mode 100644 src/OpenSHC/UI/MenuItems/UnusedOldTitleMenu/MenuItemActionHandler_UnusedOldTitleMenu_General.cpp create mode 100644 src/OpenSHC/UI/MenuItems/UnusedWinCondition/MenuItemActionHandler_UnusedWinCondition_Options.cpp create mode 100644 src/OpenSHC/UI/MenuModalComposition/findModalMenu.cpp create mode 100644 src/OpenSHC/UI/MenuModalComposition/loadAllMenuElementsOfMenuModals.cpp create mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_CreateOrTriggerInvasion.cpp create mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_DebugDataAiInfo.cpp create mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_DebugDataCurrentPlayerData.cpp create mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_DebugDataMapData.cpp create mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_DebugDataMousePointing.cpp create mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_DebugDataNetwork.cpp create mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_DebugDataSplitInfo.cpp create mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_DebugDataUnitData.cpp create mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_DebugDataZoneDataUnk.cpp create mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_DisableTroops.cpp create mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_DisableWeapon.cpp create mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_DisplayAiLordMessage.cpp create mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_EnterTitleOnGameStart.cpp create mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_GameplayOptions.cpp create mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_NetworkOptions.cpp create mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_OnlineQuitGame.cpp create mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_OptionsMenu.cpp create mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_SkirmishConnectionOptions.cpp create mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_SkirmishPlayOptions.cpp create mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_SoundOptions.cpp create mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_StartGoods.cpp create mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_TextEditor.cpp create mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_TraderSettings.cpp create mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_TriggerEvent.cpp create mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_TutorialBox_Thunk.cpp create mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_UnusedSiegeAttackingForceUnk.cpp create mode 100644 src/OpenSHC/UI/MenuTextInputState/clearModalDialog2to6.cpp create mode 100644 src/OpenSHC/UI/MenuViews/CampaignUnk/MenuView_CampaignUnk_DoEveryFrame.cpp create mode 100644 src/OpenSHC/UI/MenuViews/CrusadeMissionIntro/MenuView_CrusadeMissionIntro_Prepare.cpp create mode 100644 src/OpenSHC/UI/MenuViews/EditScenario/MenuView_EditScenario_Prepare.cpp create mode 100644 src/OpenSHC/UI/MenuViews/General/MenuView_General_DoEveryFrame_FirstGfxCentered.cpp create mode 100644 src/OpenSHC/UI/MenuViews/General/MenuView_General_DoInitial_OnlySetMenuXY.cpp create mode 100644 src/OpenSHC/UI/MenuViews/General/MenuView_General_Prepare_SwordShieldAndBorder.cpp create mode 100644 src/OpenSHC/UI/MenuViews/IntroLogos/MenuView_IntroLogos_DoInitial.cpp create mode 100644 src/OpenSHC/UI/MenuViews/MapEditorLandscaping/MenuView_MapEditorLandscaping_Prepare.cpp create mode 100644 src/OpenSHC/UI/MenuViews/NewMapMapsize/MenuView_NewMapMapsize_Prepare.cpp create mode 100644 src/OpenSHC/UI/MenuViews/NewMapMaptype/MenuView_NewMapMaptype_Prepare.cpp create mode 100644 src/OpenSHC/UI/MenuViews/RankingGames/MenuView_RankingGames_Prepare.cpp create mode 100644 src/OpenSHC/UI/MenuViews/Unknown26/MenuView_Unknown26_CampaignRelatedUnk_Prepare.cpp create mode 100644 src/OpenSHC/UI/MenuViews/UnusedChooseAvailableKeeps/MenuView_UnusedChooseAvailableKeeps_Prepare.cpp create mode 100644 src/OpenSHC/UI/MenuViews/UnusedDemoBuyItScreen/MenuView_UnusedDemoBuyItScreen_DoEveryFrame.cpp create mode 100644 src/OpenSHC/UI/MenuViews/UnusedExtremeAd/MenuView_UnusedExtremeAd_Prepare.cpp create mode 100644 src/OpenSHC/UI/MenuViews/UnusedHelpTextEditor/MenuView_UnusedHelpTextEditor_DoEveryFrame.cpp create mode 100644 src/OpenSHC/UI/MenuViews/UnusedHelpTextEditor/MenuView_UnusedHelpTextEditor_Prepare.cpp create mode 100644 src/OpenSHC/UI/MenuViews/UnusedSomeMissionStartUnk/MenuView_UnusedSomeMissionStartUnk_Prepare.cpp create mode 100644 src/OpenSHC/UI/MinimapViewState/setMapPropertyDependingOnMapSize.cpp create mode 100644 src/OpenSHC/UI/MinimapViewState/setTileColorsDependingOnMapSize.cpp create mode 100644 src/OpenSHC/UI/MinimapViewState/triggerMinimapRedraw.cpp create mode 100644 src/OpenSHC/UI/PlayAMessageFromAI.cpp create mode 100644 src/OpenSHC/UI/Rendering/AlphaAndButtonSurface/freeMemory.cpp create mode 100644 src/OpenSHC/UI/Rendering/AlphaAndButtonSurface/renderNonInteractingButtonBackground.cpp create mode 100644 src/OpenSHC/UI/Rendering/ButtonGmData/getPictureNumberInGm.cpp create mode 100644 src/OpenSHC/UI/Rendering/PencilRenderCore/setupPencilSurface.cpp create mode 100644 src/OpenSHC/UI/Rendering/RenderBuildingMenu_RecruitingBuilding.cpp create mode 100644 src/OpenSHC/UI/Rendering/RenderInGameChatDisplayElement.cpp create mode 100644 src/OpenSHC/UI/Rendering/RenderMenuGfxHelper.cpp create mode 100644 src/OpenSHC/UI/Rendering/RenderNoRushDisplayElementUnk.cpp create mode 100644 src/OpenSHC/UI/Rendering/RenderNoTreeGrowthTextDisplayElement.cpp create mode 100644 src/OpenSHC/UI/Rendering/RenderResourceMissing1DisplayElement.cpp create mode 100644 src/OpenSHC/UI/Rendering/RenderResourceMissing2DisplayElement.cpp create mode 100644 src/OpenSHC/UI/Rendering/RenderUnknownDisplayElement7.cpp create mode 100644 src/OpenSHC/UI/Rendering/TextureRenderCore/CheckGfxResourceExists.cpp create mode 100644 src/OpenSHC/UI/Rendering/TextureRenderCore/checkIfGfxTgxStartsWithTransparentPixels.cpp create mode 100644 src/OpenSHC/UI/Rendering/TextureRenderCore/restoreMapSurfaceHeightRangeFromTemporaryUnk.cpp create mode 100644 src/OpenSHC/UI/Rendering/TextureRenderCore/setActiveMenuTabIndexToZero.cpp create mode 100644 src/OpenSHC/UI/Rendering/TextureRenderCore/setMapSurfaceHeightRange.cpp create mode 100644 src/OpenSHC/UI/Rendering/TextureRenderCore/setMapSurfaceHeightRangeUnk.cpp create mode 100644 src/OpenSHC/UI/Rendering/TextureRenderCore/setMenuTabIndexUnk.cpp create mode 100644 src/OpenSHC/UI/Rendering/TextureRenderCore/setRenderingRect.cpp create mode 100644 src/OpenSHC/UI/Rendering/TextureRenderCore/setRenderingRectToGameResolution.cpp create mode 100644 src/OpenSHC/UI/Rendering/TextureRenderCore/setScreenMenuSurfaceHeightRange.cpp create mode 100644 src/OpenSHC/UI/Rendering/TextureRenderCore/setScreenMenuSurfaceHeightRangeToResolution.cpp create mode 100644 src/OpenSHC/UI/Rendering/TextureRenderCore/temporarySaveMapSurfaceHeightRangeUnk.cpp create mode 100644 src/OpenSHC/UI/Rendering/TextureRenderCore/transformTgxCompressedImageToRGB565.cpp create mode 100644 src/OpenSHC/UI/Rendering/TextureRenderCore/transformUncompressedImageToRGB565.cpp create mode 100644 src/OpenSHC/UI/Rendering/TextureRenderCore/transformUncompressedImageWithMarkerUnkToRGB565.cpp create mode 100644 src/OpenSHC/UI/Rendering/TogglePlayerPingDisplayElementUnk.cpp create mode 100644 src/OpenSHC/UI/Rendering/WindowAndDirectDraw/cleanDirectDraw.cpp create mode 100644 src/OpenSHC/UI/Rendering/WindowAndDirectDraw/finalizeDirectDrawShutdown.cpp create mode 100644 src/OpenSHC/UI/RestoreScenarioGold.cpp create mode 100644 src/OpenSHC/UI/SetActiveCreditsSequenceIndex.cpp create mode 100644 src/OpenSHC/UI/SetTutorialHintActiveWithTimestamp.cpp create mode 100644 src/OpenSHC/UI/ShowProgressBarSaveLoadDialog.cpp create mode 100644 src/OpenSHC/UI/TacticalPowersFill.cpp create mode 100644 src/OpenSHC/Util/Timing/Stopwatch/start.cpp create mode 100644 src/OpenSHC/Util/Timing/Stopwatch/stop.cpp diff --git a/src/OpenSHC/Game/GameCore/exitToScenarioDescriptionMenu.cpp b/src/OpenSHC/Game/GameCore/exitToScenarioDescriptionMenu.cpp new file mode 100644 index 000000000..6d905a653 --- /dev/null +++ b/src/OpenSHC/Game/GameCore/exitToScenarioDescriptionMenu.cpp @@ -0,0 +1,19 @@ +#include "OpenSHC/Game/GameCore.func.hpp" +#include "OpenSHC/UI/Enums/MenuViewType.hpp" + +namespace OpenSHC { +namespace Game { + + using OpenSHC::UI::Enums::MenuViewType; + + // FUNCTION: STRONGHOLDCRUSADER 0x00471A80 + void GameCore::exitToScenarioDescriptionMenu() + { + MACRO_CALL_MEMBER(OpenSHC::Game::GameCore_Func::removeLadyAndJester, this)(); + this->field22_0x64 = 0; + MACRO_CALL_MEMBER(OpenSHC::Game::GameCore_Func::switchToMenuView, this)( + OpenSHC::UI::Enums::MVT_SCENARIO_DESCRIPTION, 0); + } + +} +} diff --git a/src/OpenSHC/Game/GameCore/isGameHaltingMenuOpen.cpp b/src/OpenSHC/Game/GameCore/isGameHaltingMenuOpen.cpp new file mode 100644 index 000000000..db40763f4 --- /dev/null +++ b/src/OpenSHC/Game/GameCore/isGameHaltingMenuOpen.cpp @@ -0,0 +1,32 @@ +#include "OpenSHC/Game/GameCore.func.hpp" +#include "OpenSHC/Game/GameMode.hpp" +#include "OpenSHC/UI/Enums/MenuModalType.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" +#include "OpenSHC/Globals/DAT_MenuModalComposition1.hpp" +#include "OpenSHC/Globals/DAT_MenuTextInputState.hpp" + +namespace OpenSHC { +namespace Game { + + using OpenSHC::Game::GameMode; + using OpenSHC::UI::Enums::MenuModalType; + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x0046BD20 + BOOLEnum GameCore::isGameHaltingMenuOpen() + { + if ((DAT_GameSynchronyState::instance.currentGameMode != OpenSHC::Game::GM_SOLITARY) + && (DAT_GameSynchronyState::instance.currentGameMode != OpenSHC::Game::GM_SKIRMISH_SINGLE_PLAYER)) { + return FALSE; + } + if (DAT_MenuTextInputState::instance.currentModalDialog != OpenSHC::UI::Enums::MMT_NO_MENU) { + return TRUE; + } + return ( + uint)(DAT_MenuModalComposition1::instance.activeModalDialogID == OpenSHC::UI::Enums::MMT_IN_GAME_HELP_TEXT); + } + +} +} diff --git a/src/OpenSHC/Game/GameCore/setTabToSwitchTo.cpp b/src/OpenSHC/Game/GameCore/setTabToSwitchTo.cpp new file mode 100644 index 000000000..9a93c254c --- /dev/null +++ b/src/OpenSHC/Game/GameCore/setTabToSwitchTo.cpp @@ -0,0 +1,21 @@ +#include "OpenSHC/Game/GameCore.func.hpp" +#include "OpenSHC/UI/Enums/MenuViewType.hpp" + +namespace OpenSHC { +namespace Game { + + using OpenSHC::UI::Enums::MenuViewType; + + // FUNCTION: STRONGHOLDCRUSADER 0x0046B300 + void GameCore::setTabToSwitchTo() + { + if (this->currentMenuViewType == OpenSHC::UI::Enums::MVT_BUILD_MENU) { + this->secondaryActiveMenuTabToSwitchTo = this->buildmenuMenuTabToSwitchTo; + } + if (this->currentMenuViewType == OpenSHC::UI::Enums::MVT_MAP_EDITOR_LANDSCAPING) { + this->secondaryActiveMenuTabToSwitchTo.tabType = this->landscapingmenuMenuTabToSwitchTo; + } + } + +} +} diff --git a/src/OpenSHC/Game/GameCore/setViewOnExitUnk.cpp b/src/OpenSHC/Game/GameCore/setViewOnExitUnk.cpp new file mode 100644 index 000000000..15441316b --- /dev/null +++ b/src/OpenSHC/Game/GameCore/setViewOnExitUnk.cpp @@ -0,0 +1,13 @@ +#include "OpenSHC/Game/GameCore.func.hpp" +#include "OpenSHC/UI/Enums/MenuViewType.hpp" + +namespace OpenSHC { +namespace Game { + + using OpenSHC::UI::Enums::MenuViewType; + + // FUNCTION: STRONGHOLDCRUSADER 0x0046B2F0 + void GameCore::setViewOnExitUnk() { this->currentMenuViewType = ((MenuViewType)2); } + +} +} diff --git a/src/OpenSHC/Game/GameCore/swapBuildMenuTab.cpp b/src/OpenSHC/Game/GameCore/swapBuildMenuTab.cpp new file mode 100644 index 000000000..f3711c65c --- /dev/null +++ b/src/OpenSHC/Game/GameCore/swapBuildMenuTab.cpp @@ -0,0 +1,20 @@ +#include "OpenSHC/Game/GameCore.func.hpp" +#include "OpenSHC/UI/Enums/BuildingsAndStatusMenuTabType.hpp" + +namespace OpenSHC { +namespace Game { + + using OpenSHC::UI::Enums::BuildingsAndStatusMenuTabType; + + // FUNCTION: STRONGHOLDCRUSADER 0x0046B320 + void GameCore::swapBuildMenuTab() + { + if (this->buildmenuMenuTabToSwitchTo.tabType == OpenSHC::UI::Enums::BASMTT_SIEGETENT_SHIELD) { + this->buildmenuMenuTabToSwitchTo.tabType = OpenSHC::UI::Enums::BASMTT_SIEGETENT_BATTERINGRAM; + return; + } + this->buildmenuMenuTabToSwitchTo = this->secondaryActiveMenuTabToSwitchTo; + } + +} +} diff --git a/src/OpenSHC/Game/GameCore/switchToScenarioDescriptionMenuView.cpp b/src/OpenSHC/Game/GameCore/switchToScenarioDescriptionMenuView.cpp new file mode 100644 index 000000000..8e2bf467b --- /dev/null +++ b/src/OpenSHC/Game/GameCore/switchToScenarioDescriptionMenuView.cpp @@ -0,0 +1,19 @@ +#include "OpenSHC/Game/GameCore.func.hpp" +#include "OpenSHC/UI/Enums/MenuViewType.hpp" + +namespace OpenSHC { +namespace Game { + + using OpenSHC::UI::Enums::MenuViewType; + + // FUNCTION: STRONGHOLDCRUSADER 0x004719E0 + void GameCore::switchToScenarioDescriptionMenuView() + { + MACRO_CALL_MEMBER(OpenSHC::Game::GameCore_Func::removeJesterAndLadyUnitsInCertainMissions, this)(); + MACRO_CALL_MEMBER(OpenSHC::Game::GameCore_Func::switchToMenuView, this)( + OpenSHC::UI::Enums::MVT_SCENARIO_DESCRIPTION, 0); + this->field22_0x64 = 0; + } + +} +} diff --git a/src/OpenSHC/Game/GameStateStructures/activateTraderState.cpp b/src/OpenSHC/Game/GameStateStructures/activateTraderState.cpp new file mode 100644 index 000000000..b5d60d31a --- /dev/null +++ b/src/OpenSHC/Game/GameStateStructures/activateTraderState.cpp @@ -0,0 +1,14 @@ +#include "../GameStateStructures.func.hpp" + +namespace OpenSHC { +namespace Game { + + // FUNCTION: STRONGHOLDCRUSADER 0x004586D0 + void GameStateStructures::activateTraderState() + { + this->mapAndTime.traderRelated2 = 2; + this->mapAndTime.traderRelatedCounter1 = 0; + } + +} +} diff --git a/src/OpenSHC/Game/GameStateStructures/calculateTaxBribeExpenseForPlayer.cpp b/src/OpenSHC/Game/GameStateStructures/calculateTaxBribeExpenseForPlayer.cpp new file mode 100644 index 000000000..2c0b4bd8d --- /dev/null +++ b/src/OpenSHC/Game/GameStateStructures/calculateTaxBribeExpenseForPlayer.cpp @@ -0,0 +1,17 @@ +#include "../GameStateStructures.func.hpp" + +namespace OpenSHC { +namespace Game { + + // FUNCTION: STRONGHOLDCRUSADER 0x00459140 + int GameStateStructures::calculateTaxBribeExpenseForPlayer(int playerIndex, int taxStep, int currentPopulation) + { + int _taxIncome = ((5 - taxStep) * currentPopulation) / 2; + if (this->playerDataArray[playerIndex].currentResources[0xf] <= 0) { + _taxIncome = 0; + } + return _taxIncome; + } + +} +} diff --git a/src/OpenSHC/Game/GameStateStructures/clearTribeHotKey.cpp b/src/OpenSHC/Game/GameStateStructures/clearTribeHotKey.cpp new file mode 100644 index 000000000..88683c046 --- /dev/null +++ b/src/OpenSHC/Game/GameStateStructures/clearTribeHotKey.cpp @@ -0,0 +1,20 @@ +#include "../GameStateStructures.func.hpp" + +#include "OpenSHC/Game/State/UnitSelectionHotKeyEntry.hpp" + +namespace OpenSHC { +namespace Game { + + using OpenSHC::Game::State::UnitSelectionHotKeyEntry; + + // FUNCTION: STRONGHOLDCRUSADER 0x00459BB0 + void GameStateStructures::clearTribeHotKey(int hotkeyID) + { + for (int iVar2 = 0; iVar2 < 2500; iVar2++) { + this->hotkeyTribes[hotkeyID].units[iVar2].id = -1; + this->hotkeyTribes[hotkeyID].units[iVar2].uid = -1; + } + } + +} +} diff --git a/src/OpenSHC/Game/GameStateStructures/destroyPlayerCompletely.cpp b/src/OpenSHC/Game/GameStateStructures/destroyPlayerCompletely.cpp new file mode 100644 index 000000000..2087fbaad --- /dev/null +++ b/src/OpenSHC/Game/GameStateStructures/destroyPlayerCompletely.cpp @@ -0,0 +1,28 @@ +#include "../GameStateStructures.func.hpp" + +#include "OpenSHC/Map/Buildings/BuildingsState.func.hpp" +#include "OpenSHC/Map/Entities/EntityState.func.hpp" +#include "OpenSHC/Map/TileMapState.func.hpp" +#include "OpenSHC/Map/Units/UnitsState.func.hpp" + +#include "OpenSHC/Globals/DAT_BuildingsState.hpp" +#include "OpenSHC/Globals/DAT_EntityState.hpp" +#include "OpenSHC/Globals/DAT_TileMapState.hpp" +#include "OpenSHC/Globals/DAT_UnitsState.hpp" + +namespace OpenSHC { +namespace Game { + + // FUNCTION: STRONGHOLDCRUSADER 0x00457B40 + void GameStateStructures::destroyPlayerCompletely(int playerID) + { + MACRO_CALL_MEMBER(OpenSHC::Map::Units::UnitsState_Func::killUnits, DAT_UnitsState::ptr)(playerID); + MACRO_CALL_MEMBER(OpenSHC::Map::Buildings::BuildingsState_Func::destroyBuildings, DAT_BuildingsState::ptr)( + playerID); + MACRO_CALL_MEMBER(OpenSHC::Map::TileMapState_Func::destroyWallsOfPlayer, DAT_TileMapState::ptr)(playerID); + MACRO_CALL_MEMBER(OpenSHC::Map::Entities::EntityState_Func::destroyEntitiesPart2, DAT_EntityState::ptr)( + playerID); + } + +} +} diff --git a/src/OpenSHC/Game/GameStateStructures/fillWith0xFF.cpp b/src/OpenSHC/Game/GameStateStructures/fillWith0xFF.cpp new file mode 100644 index 000000000..2948e6015 --- /dev/null +++ b/src/OpenSHC/Game/GameStateStructures/fillWith0xFF.cpp @@ -0,0 +1,23 @@ +#include "../GameStateStructures.func.hpp" + +#include "OpenSHC/Game/GameStateStructures.hpp" + +namespace OpenSHC { +namespace Game { + + using OpenSHC::Game::GameStateStructures; + + // FUNCTION: STRONGHOLDCRUSADER 0x00459BE0 + void GameStateStructures::fillWith0xFF() + { + // fixme: This could have just been a memset(-1) to the whole region + for (int hotkeyEntry = 0; hotkeyEntry < 10; hotkeyEntry++) { + for (int iVar2 = 0; iVar2 < 2500; iVar2++) { + this->hotkeyTribes[hotkeyEntry].units[iVar2].id = -1; + this->hotkeyTribes[hotkeyEntry].units[iVar2].uid = -1; + } + } + } + +} +} diff --git a/src/OpenSHC/Game/GameStateStructures/findNextPlayerWithMarketplace.cpp b/src/OpenSHC/Game/GameStateStructures/findNextPlayerWithMarketplace.cpp new file mode 100644 index 000000000..dc163282d --- /dev/null +++ b/src/OpenSHC/Game/GameStateStructures/findNextPlayerWithMarketplace.cpp @@ -0,0 +1,22 @@ +#include "../GameStateStructures.func.hpp" + +#include "OpenSHC/Game/Player/PlayerData.hpp" + +namespace OpenSHC { +namespace Game { + + using OpenSHC::Game::Player::PlayerData; + + // FUNCTION: STRONGHOLDCRUSADER 0x00458700 + int GameStateStructures::findNextPlayerWithMarketplace(int param_1) + { + for (int iVar1 = param_1 + 1; iVar1 < 9; iVar1++) { + if (0 < this->playerDataArray[iVar1].marketplace.id) { + return iVar1; + } + } + return 0; + } + +} +} diff --git a/src/OpenSHC/Game/GameStateStructures/getBatchBuyPrice.cpp b/src/OpenSHC/Game/GameStateStructures/getBatchBuyPrice.cpp new file mode 100644 index 000000000..736371e18 --- /dev/null +++ b/src/OpenSHC/Game/GameStateStructures/getBatchBuyPrice.cpp @@ -0,0 +1,13 @@ +#include "../GameStateStructures.func.hpp" + +namespace OpenSHC { +namespace Game { + + // FUNCTION: STRONGHOLDCRUSADER 0x00458890 + int GameStateStructures::getBatchBuyPrice(undefined4 playerID, int resourceType) + { + return this->mapAndTime.buyAndSalesPriceArray[resourceType].buyPrice; + } + +} +} diff --git a/src/OpenSHC/Game/GameStateStructures/getBuyPriceForOneUnit.cpp b/src/OpenSHC/Game/GameStateStructures/getBuyPriceForOneUnit.cpp new file mode 100644 index 000000000..1b1410090 --- /dev/null +++ b/src/OpenSHC/Game/GameStateStructures/getBuyPriceForOneUnit.cpp @@ -0,0 +1,13 @@ +#include "../GameStateStructures.func.hpp" + +namespace OpenSHC { +namespace Game { + + // FUNCTION: STRONGHOLDCRUSADER 0x004588D0 + int GameStateStructures::getBuyPriceForOneUnit(int param_1) + { + return this->mapAndTime.buyAndSalesPriceArray[param_1].buyPrice / 5; + } + +} +} diff --git a/src/OpenSHC/Game/GameStateStructures/getNumberToDisplayBribeIncome.cpp b/src/OpenSHC/Game/GameStateStructures/getNumberToDisplayBribeIncome.cpp new file mode 100644 index 000000000..93c881c58 --- /dev/null +++ b/src/OpenSHC/Game/GameStateStructures/getNumberToDisplayBribeIncome.cpp @@ -0,0 +1,19 @@ +#include "../GameStateStructures.func.hpp" + +namespace OpenSHC { +namespace Game { + + // FUNCTION: STRONGHOLDCRUSADER 0x004591B0 + int GameStateStructures::getNumberToDisplayBribeIncome(int playerIndex, int taxStep, int currentPopulation) + { + int iVar1 = 0; + if (taxStep < 3) { + iVar1 = MACRO_CALL_MEMBER(OpenSHC::Game::GameStateStructures_Func::calculateTaxBribeExpenseForPlayer, this)( + playerIndex, taxStep, currentPopulation); + iVar1 = iVar1 * 4; + } + return iVar1 / 10; + } + +} +} diff --git a/src/OpenSHC/Game/GameStateStructures/getNumberToDisplayPlayerTaxIncome.cpp b/src/OpenSHC/Game/GameStateStructures/getNumberToDisplayPlayerTaxIncome.cpp new file mode 100644 index 000000000..2fffb57e1 --- /dev/null +++ b/src/OpenSHC/Game/GameStateStructures/getNumberToDisplayPlayerTaxIncome.cpp @@ -0,0 +1,19 @@ +#include "../GameStateStructures.func.hpp" + +namespace OpenSHC { +namespace Game { + + // FUNCTION: STRONGHOLDCRUSADER 0x00459170 + int GameStateStructures::getNumberToDisplayPlayerTaxIncome(int playerIndex, int taxStep, int currentPopulation) + { + int iVar1 = 0; + if (3 < taxStep) { + iVar1 = MACRO_CALL_MEMBER(OpenSHC::Game::GameStateStructures_Func::calculateTaxIncomeForPlayer, this)( + playerIndex, taxStep, currentPopulation); + iVar1 = iVar1 * 4; + } + return iVar1 / 10; + } + +} +} diff --git a/src/OpenSHC/Game/GameStateStructures/getSalePriceOfGood.cpp b/src/OpenSHC/Game/GameStateStructures/getSalePriceOfGood.cpp new file mode 100644 index 000000000..3d06ffbb4 --- /dev/null +++ b/src/OpenSHC/Game/GameStateStructures/getSalePriceOfGood.cpp @@ -0,0 +1,17 @@ +#include "../GameStateStructures.func.hpp" + +#include "OpenSHC/Game/Resources/ResourceType.hpp" + +namespace OpenSHC { +namespace Game { + + using OpenSHC::Game::Resources::ResourceType; + + // FUNCTION: STRONGHOLDCRUSADER 0x004588F0 + int GameStateStructures::getSalePriceOfGood(ResourceType param_1) + { + return this->mapAndTime.buyAndSalesPriceArray[param_1].salesPrice / 5; + } + +} +} diff --git a/src/OpenSHC/Game/GameStateStructures/getSalesPrice.cpp b/src/OpenSHC/Game/GameStateStructures/getSalesPrice.cpp new file mode 100644 index 000000000..9ffd6215f --- /dev/null +++ b/src/OpenSHC/Game/GameStateStructures/getSalesPrice.cpp @@ -0,0 +1,15 @@ +#include "../GameStateStructures.func.hpp" + +namespace OpenSHC { +namespace Game { + + // FUNCTION: STRONGHOLDCRUSADER 0x0045B7F0 + int GameStateStructures::getSalesPrice(int playerID, int resourceType) + { + return (this->mapAndTime.buyAndSalesPriceArray[resourceType].salesPrice / 5) + * MACRO_CALL_MEMBER(OpenSHC::Game::GameStateStructures_Func::getSellResourceAmount, this)( + playerID, resourceType); + } + +} +} diff --git a/src/OpenSHC/Game/GameStateStructures/getTeamsDifferent.cpp b/src/OpenSHC/Game/GameStateStructures/getTeamsDifferent.cpp new file mode 100644 index 000000000..e7d0eac32 --- /dev/null +++ b/src/OpenSHC/Game/GameStateStructures/getTeamsDifferent.cpp @@ -0,0 +1,20 @@ +#include "../GameStateStructures.func.hpp" + +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +namespace OpenSHC { +namespace Game { + + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x004596D0 + BOOLEnum GameStateStructures::getTeamsDifferent(int firstPlayerId, int secondPlayerId) + { + if ((firstPlayerId != 0) && (secondPlayerId != 0)) { + return this->mapAndTime.playerTeams[firstPlayerId] != this->mapAndTime.playerTeams[secondPlayerId]; + } + return FALSE; + } + +} +} diff --git a/src/OpenSHC/Game/GameStateStructures/isFullIDEqualsToMinus1.cpp b/src/OpenSHC/Game/GameStateStructures/isFullIDEqualsToMinus1.cpp new file mode 100644 index 000000000..967b56e23 --- /dev/null +++ b/src/OpenSHC/Game/GameStateStructures/isFullIDEqualsToMinus1.cpp @@ -0,0 +1,19 @@ +#include "../GameStateStructures.func.hpp" + +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" + +namespace OpenSHC { +namespace Game { + + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x004563B0 + BOOLEnum GameStateStructures::isFullIDEqualsToMinus1(int param_1) + { + return DAT_GameSynchronyState::instance.currentPlayerFullIDArray[param_1] == -1; + } + +} +} diff --git a/src/OpenSHC/Game/GameStateStructures/isResourceTypeTradeable.cpp b/src/OpenSHC/Game/GameStateStructures/isResourceTypeTradeable.cpp new file mode 100644 index 000000000..606cd3d2e --- /dev/null +++ b/src/OpenSHC/Game/GameStateStructures/isResourceTypeTradeable.cpp @@ -0,0 +1,22 @@ +#include "../GameStateStructures.func.hpp" + +#include "OpenSHC/Game/Resources/ResourceType.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +namespace OpenSHC { +namespace Game { + + using OpenSHC::Game::Resources::ResourceType; + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x00458740 + BOOLEnum GameStateStructures::isResourceTypeTradeable(ResourceType resourceType) + { + if (resourceType == OpenSHC::Game::Resources::RT_PITCH) { + resourceType = OpenSHC::Game::Resources::RT_PARTIALPITCH; + } + return this->mapAndTime.isResourceTradeable[resourceType] != 0; + } + +} +} diff --git a/src/OpenSHC/Game/GameStateStructures/isSameTeam.cpp b/src/OpenSHC/Game/GameStateStructures/isSameTeam.cpp new file mode 100644 index 000000000..d93bb7546 --- /dev/null +++ b/src/OpenSHC/Game/GameStateStructures/isSameTeam.cpp @@ -0,0 +1,17 @@ +#include "../GameStateStructures.func.hpp" + +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +namespace OpenSHC { +namespace Game { + + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x00401090 + BOOLEnum GameStateStructures::isSameTeam(int playerID1, int playerID2) + { + return this->mapAndTime.playerTeams[playerID1] == this->mapAndTime.playerTeams[playerID2]; + } + +} +} diff --git a/src/OpenSHC/Game/GameStateStructures/resetSomethingBuildingRelatedForAllPlayers.cpp b/src/OpenSHC/Game/GameStateStructures/resetSomethingBuildingRelatedForAllPlayers.cpp new file mode 100644 index 000000000..84106d9c4 --- /dev/null +++ b/src/OpenSHC/Game/GameStateStructures/resetSomethingBuildingRelatedForAllPlayers.cpp @@ -0,0 +1,18 @@ +#include "../GameStateStructures.func.hpp" + +namespace OpenSHC { +namespace Game { + + // FUNCTION: STRONGHOLDCRUSADER 0x0045AF00 + void GameStateStructures::resetSomethingBuildingRelatedForAllPlayers() + { + for (int playerID = 1; playerID < 9; playerID++) { + for (int iVar1 = 0; iVar1 < 20; iVar1++) { + MACRO_CALL_MEMBER(OpenSHC::Game::GameStateStructures_Func::validateBuildingCategoryReference, this)( + playerID, iVar1); + } + } + } + +} +} diff --git a/src/OpenSHC/Game/GameStateStructures/resetTraderState.cpp b/src/OpenSHC/Game/GameStateStructures/resetTraderState.cpp new file mode 100644 index 000000000..6f20f5f20 --- /dev/null +++ b/src/OpenSHC/Game/GameStateStructures/resetTraderState.cpp @@ -0,0 +1,20 @@ +#include "../GameStateStructures.func.hpp" + +namespace OpenSHC { +namespace Game { + + /* + decompilerscript: committed: 2025-01-30 21:57:43.216000 + */ + + // FUNCTION: STRONGHOLDCRUSADER 0x004586F0 + void GameStateStructures::resetTraderState() + + { + this->mapAndTime.traderRelated2 = 0; + this->mapAndTime.traderRelatedCounter1 = 0; + return; + } + +} +} diff --git a/src/OpenSHC/Game/GameStateStructures/switchPlayerOwnership.cpp b/src/OpenSHC/Game/GameStateStructures/switchPlayerOwnership.cpp new file mode 100644 index 000000000..5f57f695a --- /dev/null +++ b/src/OpenSHC/Game/GameStateStructures/switchPlayerOwnership.cpp @@ -0,0 +1,23 @@ +#include "../GameStateStructures.func.hpp" + +#include "OpenSHC/AI/AICState.func.hpp" + +#include "OpenSHC/Globals/DAT_AICState.hpp" + +namespace OpenSHC { +namespace Game { + + // FUNCTION: STRONGHOLDCRUSADER 0x0045B460 + void GameStateStructures::switchPlayerOwnership(int playerID) + { + for (int fromPlayer = 1; fromPlayer < 9; fromPlayer++) { + if (fromPlayer != playerID) { + MACRO_CALL_MEMBER(OpenSHC::Game::GameStateStructures_Func::changePlayerOwnership, this)( + fromPlayer, playerID); + } + } + MACRO_CALL_MEMBER(OpenSHC::AI::AICState_Func::recomputeAIZonerLayer, DAT_AICState::ptr)(); + } + +} +} diff --git a/src/OpenSHC/Game/UpdateUnitValueLoss.cpp b/src/OpenSHC/Game/UpdateUnitValueLoss.cpp new file mode 100644 index 000000000..306f1adc4 --- /dev/null +++ b/src/OpenSHC/Game/UpdateUnitValueLoss.cpp @@ -0,0 +1,15 @@ +#include "OpenSHC/Globals/DAT_CurrentPlayerUnitLosses.hpp" + +namespace OpenSHC { +namespace Game { + + // FUNCTION: STRONGHOLDCRUSADER 0x0044aa70 + void UpdateUnitValueLoss(int value) + { + if (0 < value) { + DAT_CurrentPlayerUnitLosses::instance += value; + } + } + +} // namespace Game +} // namespace OpenSHC diff --git a/src/OpenSHC/Global/PrintToDestination.cpp b/src/OpenSHC/Global/PrintToDestination.cpp new file mode 100644 index 000000000..b8e97a0bf --- /dev/null +++ b/src/OpenSHC/Global/PrintToDestination.cpp @@ -0,0 +1,14 @@ +#include "OpenSHC/Global.func.hpp" +#include "OpenSHC/OS.func.hpp" + +namespace OpenSHC { + +// FUNCTION: STRONGHOLDCRUSADER 0x0045D060 +void Global::PrintToDestination(wchar_t* destination, wchar_t* format, ...) +{ + va_list args; + va_start(args, format); + MACRO_CALL(OpenSHC::OS_Func::__vswprintf)(destination, format, args); +} + +} diff --git a/src/OpenSHC/Map/Buildings/UpdateBadBuildingCessPitOrDancingBearUnk.cpp b/src/OpenSHC/Map/Buildings/UpdateBadBuildingCessPitOrDancingBearUnk.cpp new file mode 100644 index 000000000..ef4df72b3 --- /dev/null +++ b/src/OpenSHC/Map/Buildings/UpdateBadBuildingCessPitOrDancingBearUnk.cpp @@ -0,0 +1,17 @@ +#include "OpenSHC/Map/Buildings.func.hpp" + +#include "OpenSHC/Globals/DAT_BuildingsState.hpp" +#include "OpenSHC/Globals/DAT_CurrentBuildingID.hpp" + +namespace OpenSHC { +namespace Map { + + // FUNCTION: STRONGHOLDCRUSADER 0x00418F70 + void Buildings::UpdateBadBuildingCessPitOrDancingBearUnk() + { + DAT_BuildingsState::instance.buildings[DAT_CurrentBuildingID::instance].renderAnimation = 0; + DAT_BuildingsState::instance.buildings[DAT_CurrentBuildingID::instance].displayOwnerFlag = 0; + } + +} +} diff --git a/src/OpenSHC/Map/Buildings/UpdateBadBuildingRackFlogging.cpp b/src/OpenSHC/Map/Buildings/UpdateBadBuildingRackFlogging.cpp new file mode 100644 index 000000000..42734366c --- /dev/null +++ b/src/OpenSHC/Map/Buildings/UpdateBadBuildingRackFlogging.cpp @@ -0,0 +1,21 @@ +#include "OpenSHC/Game/GameStateStructures.func.hpp" +#include "OpenSHC/Map/Buildings.func.hpp" + +#include "OpenSHC/Globals/DAT_BuildingsState.hpp" +#include "OpenSHC/Globals/DAT_CurrentBuildingID.hpp" +#include "OpenSHC/Globals/DAT_GameState.hpp" + +namespace OpenSHC { +namespace Map { + + // FUNCTION: STRONGHOLDCRUSADER 0x00419340 + void Buildings::UpdateBadBuildingRackFlogging() + { + DAT_BuildingsState::instance.buildings[DAT_CurrentBuildingID::instance].renderAnimation = 0; + DAT_BuildingsState::instance.buildings[DAT_CurrentBuildingID::instance].displayOwnerFlag = 0; + MACRO_CALL_MEMBER(OpenSHC::Game::GameStateStructures_Func::addBuildingInRegistry, DAT_GameState::ptr)( + DAT_CurrentBuildingID::instance); + } + +} +} diff --git a/src/OpenSHC/Map/Buildings/UpdateBuildingShared1.cpp b/src/OpenSHC/Map/Buildings/UpdateBuildingShared1.cpp new file mode 100644 index 000000000..1931c7dea --- /dev/null +++ b/src/OpenSHC/Map/Buildings/UpdateBuildingShared1.cpp @@ -0,0 +1,16 @@ +#include "OpenSHC/Map/Buildings.func.hpp" + +#include "OpenSHC/Globals/DAT_BuildingsState.hpp" +#include "OpenSHC/Globals/DAT_CurrentBuildingID.hpp" + +namespace OpenSHC { +namespace Map { + + // FUNCTION: STRONGHOLDCRUSADER 0x004180E0 + void Buildings::UpdateBuildingShared1() + { + DAT_BuildingsState::instance.buildings[DAT_CurrentBuildingID::instance].renderAnimation = 0; + } + +} +} diff --git a/src/OpenSHC/Map/Buildings/UpdateGoodBuildingGarden.cpp b/src/OpenSHC/Map/Buildings/UpdateGoodBuildingGarden.cpp new file mode 100644 index 000000000..6e7fc0b94 --- /dev/null +++ b/src/OpenSHC/Map/Buildings/UpdateGoodBuildingGarden.cpp @@ -0,0 +1,24 @@ +#include "OpenSHC/AI/AICState.func.hpp" +#include "OpenSHC/Game/GameStateStructures.func.hpp" +#include "OpenSHC/Map/Buildings.func.hpp" + +#include "OpenSHC/Globals/DAT_AICState.hpp" +#include "OpenSHC/Globals/DAT_BuildingsState.hpp" +#include "OpenSHC/Globals/DAT_CurrentBuildingID.hpp" +#include "OpenSHC/Globals/DAT_GameState.hpp" + +namespace OpenSHC { +namespace Map { + + // FUNCTION: STRONGHOLDCRUSADER 0x00418880 + void Buildings::UpdateGoodBuildingGarden() + { + DAT_BuildingsState::instance.buildings[DAT_CurrentBuildingID::instance].renderAnimation = 0; + MACRO_CALL_MEMBER(OpenSHC::AI::AICState_Func::addBuildingToTargetableBuildings, DAT_AICState::ptr)( + DAT_CurrentBuildingID::instance); + MACRO_CALL_MEMBER(OpenSHC::Game::GameStateStructures_Func::addBuildingInRegistry, DAT_GameState::ptr)( + DAT_CurrentBuildingID::instance); + } + +} +} diff --git a/src/OpenSHC/Map/Buildings/UpdateParadeGround2.cpp b/src/OpenSHC/Map/Buildings/UpdateParadeGround2.cpp new file mode 100644 index 000000000..4ed55305f --- /dev/null +++ b/src/OpenSHC/Map/Buildings/UpdateParadeGround2.cpp @@ -0,0 +1,18 @@ +#include "OpenSHC/Map/Buildings.func.hpp" + +#include "OpenSHC/Globals/DAT_BuildingsState.hpp" +#include "OpenSHC/Globals/DAT_CurrentBuildingID.hpp" + +namespace OpenSHC { +namespace Map { + + // FUNCTION: STRONGHOLDCRUSADER 0x004184A0 + void Buildings::UpdateParadeGround2() + { + DAT_BuildingsState::instance.buildings[DAT_CurrentBuildingID::instance].renderAnimation = 1; + DAT_BuildingsState::instance.buildings[DAT_CurrentBuildingID::instance].animationIncrement = 1; + DAT_BuildingsState::instance.buildings[DAT_CurrentBuildingID::instance].animationFrame = 0x20; + } + +} +} diff --git a/src/OpenSHC/Map/Buildings/UpdateParadeGround3.cpp b/src/OpenSHC/Map/Buildings/UpdateParadeGround3.cpp new file mode 100644 index 000000000..e310a5659 --- /dev/null +++ b/src/OpenSHC/Map/Buildings/UpdateParadeGround3.cpp @@ -0,0 +1,18 @@ +#include "OpenSHC/Map/Buildings.func.hpp" + +#include "OpenSHC/Globals/DAT_BuildingsState.hpp" +#include "OpenSHC/Globals/DAT_CurrentBuildingID.hpp" + +namespace OpenSHC { +namespace Map { + + // FUNCTION: STRONGHOLDCRUSADER 0x004184D0 + void Buildings::UpdateParadeGround3() + { + DAT_BuildingsState::instance.buildings[DAT_CurrentBuildingID::instance].renderAnimation = 1; + DAT_BuildingsState::instance.buildings[DAT_CurrentBuildingID::instance].animationIncrement = 1; + DAT_BuildingsState::instance.buildings[DAT_CurrentBuildingID::instance].animationFrame = 0x1f; + } + +} +} diff --git a/src/OpenSHC/Map/Buildings/UpdateParadeGround4.cpp b/src/OpenSHC/Map/Buildings/UpdateParadeGround4.cpp new file mode 100644 index 000000000..688d69039 --- /dev/null +++ b/src/OpenSHC/Map/Buildings/UpdateParadeGround4.cpp @@ -0,0 +1,18 @@ +#include "OpenSHC/Map/Buildings.func.hpp" + +#include "OpenSHC/Globals/DAT_BuildingsState.hpp" +#include "OpenSHC/Globals/DAT_CurrentBuildingID.hpp" + +namespace OpenSHC { +namespace Map { + + // FUNCTION: STRONGHOLDCRUSADER 0x00418500 + void Buildings::UpdateParadeGround4() + { + DAT_BuildingsState::instance.buildings[DAT_CurrentBuildingID::instance].renderAnimation = 1; + DAT_BuildingsState::instance.buildings[DAT_CurrentBuildingID::instance].animationIncrement = 1; + DAT_BuildingsState::instance.buildings[DAT_CurrentBuildingID::instance].animationFrame = 0x21; + } + +} +} diff --git a/src/OpenSHC/Map/Buildings/UpdatePlacedSiegeTower.cpp b/src/OpenSHC/Map/Buildings/UpdatePlacedSiegeTower.cpp new file mode 100644 index 000000000..db633589f --- /dev/null +++ b/src/OpenSHC/Map/Buildings/UpdatePlacedSiegeTower.cpp @@ -0,0 +1,26 @@ +#include "OpenSHC/Map/Buildings.func.hpp" +#include "OpenSHC/Map/Buildings/BuildingLogicalState.hpp" + +#include "OpenSHC/Globals/DAT_BuildingsState.hpp" +#include "OpenSHC/Globals/DAT_CurrentBuildingID.hpp" +#include "OpenSHC/Globals/DAT_UnitsState.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::Map::Buildings::BuildingLogicalState; + + // FUNCTION: STRONGHOLDCRUSADER 0x004188C0 + void Buildings::UpdatePlacedSiegeTower() + { + int iVar1 = DAT_BuildingsState::instance.buildings[DAT_CurrentBuildingID::instance].unitRefID; + if ((iVar1 == 0) + || (DAT_BuildingsState::instance.buildings[DAT_CurrentBuildingID::instance].unitRefUID + != DAT_UnitsState::instance.units[iVar1].uid)) { + DAT_BuildingsState::instance.buildings[DAT_CurrentBuildingID::instance].logicalState + = OpenSHC::Map::Buildings::BLS_REMOVE; + } + } + +} +} diff --git a/src/OpenSHC/Map/Entities/EntityState/activateProjectileEntity.cpp b/src/OpenSHC/Map/Entities/EntityState/activateProjectileEntity.cpp new file mode 100644 index 000000000..9037e799e --- /dev/null +++ b/src/OpenSHC/Map/Entities/EntityState/activateProjectileEntity.cpp @@ -0,0 +1,24 @@ +#include "../EntityState.func.hpp" + +#include "OpenSHC/Map/Entities/EntityType.hpp" +#include "OpenSHC/Map/Entities/EntityTypeShort.hpp" + +namespace OpenSHC { +namespace Map { + namespace Entities { + + using OpenSHC::Map::Entities::EntityType; + using OpenSHC::Map::Entities::EntityTypeShort; + + // FUNCTION: STRONGHOLDCRUSADER 0x004039B0 + void EntityState::activateProjectileEntity(int entityID) + { + this->entityArray[entityID].logicalState = 2; + this->entityArray[entityID].field72_0xa8 = 1; + MACRO_CALL_MEMBER(OpenSHC::Map::Entities::EntityState_Func::setProjectileEntityValues2, this)( + entityID, (EntityType)this->entityArray[entityID].entityType2); + } + + } +} +} diff --git a/src/OpenSHC/Map/Entities/EntityState/deleteEntity.cpp b/src/OpenSHC/Map/Entities/EntityState/deleteEntity.cpp new file mode 100644 index 000000000..af2a57c29 --- /dev/null +++ b/src/OpenSHC/Map/Entities/EntityState/deleteEntity.cpp @@ -0,0 +1,22 @@ +#include "../EntityState.func.hpp" + +#include "OpenSHC/IO/LowLevelMemory.func.hpp" + +#include "OpenSHC/Globals/DAT_LowLevelMemory.hpp" + +namespace OpenSHC { +namespace Map { + namespace Entities { + + // FUNCTION: STRONGHOLDCRUSADER 0x004039F0 + void EntityState::deleteEntity(uint entityID) + { + MACRO_CALL_MEMBER(OpenSHC::Map::Entities::EntityState_Func::doSomethingWithOtherEntitiesOnTile, this)( + entityID); + MACRO_CALL_MEMBER(OpenSHC::IO::LowLevelMemory_Func::fillMemory_ByteValue, DAT_LowLevelMemory::ptr)( + sizeof(Entity), 0, (void*)&this->entityArray[entityID]); + } + + } +} +} diff --git a/src/OpenSHC/Map/Entities/EntityState/destroyEntitiesPart2.cpp b/src/OpenSHC/Map/Entities/EntityState/destroyEntitiesPart2.cpp new file mode 100644 index 000000000..ff14fd34b --- /dev/null +++ b/src/OpenSHC/Map/Entities/EntityState/destroyEntitiesPart2.cpp @@ -0,0 +1,19 @@ +#include "../EntityState.func.hpp" + +namespace OpenSHC { +namespace Map { + namespace Entities { + + // FUNCTION: STRONGHOLDCRUSADER 0x00401B60 + void EntityState::destroyEntitiesPart2(int param_1) + { + for (int iVar1 = 1; iVar1 < 3000; iVar1++) { + if ((this->entityArray[iVar1].logicalState == 2) && (this->entityArray[iVar1].owner == param_1)) { + this->entityArray[iVar1].logicalState = 3; + } + } + } + + } +} +} diff --git a/src/OpenSHC/Map/Entities/EntityState/getFireEntityIDAtTile.cpp b/src/OpenSHC/Map/Entities/EntityState/getFireEntityIDAtTile.cpp new file mode 100644 index 000000000..b0f274e7d --- /dev/null +++ b/src/OpenSHC/Map/Entities/EntityState/getFireEntityIDAtTile.cpp @@ -0,0 +1,27 @@ +#include "../EntityState.func.hpp" + +#include "OpenSHC/Map/Entities/EntityType.hpp" + +#include "OpenSHC/Globals/DAT_TileMapState.hpp" + +namespace OpenSHC { +namespace Map { + namespace Entities { + + using OpenSHC::Map::Entities::EntityType; + + // FUNCTION: STRONGHOLDCRUSADER 0x00401540 + int EntityState::getFireEntityIDAtTile(int tile) + { + int _current = DAT_TileMapState::instance.EntityLayer[tile]; + while (_current != 0) { + if (this->entityArray[_current].entityType == OpenSHC::Map::Entities::ET_FIRE) + return _current; + _current = this->entityArray[_current].nextEntityOnThisTileByID; + } + return 0; + } + + } +} +} diff --git a/src/OpenSHC/Map/Entities/EntityState/markEntityDestroyed.cpp b/src/OpenSHC/Map/Entities/EntityState/markEntityDestroyed.cpp new file mode 100644 index 000000000..dc3e24326 --- /dev/null +++ b/src/OpenSHC/Map/Entities/EntityState/markEntityDestroyed.cpp @@ -0,0 +1,18 @@ +#include "../EntityState.func.hpp" + +namespace OpenSHC { +namespace Map { + namespace Entities { + + // FUNCTION: STRONGHOLDCRUSADER 0x00401400 + void EntityState::markEntityDestroyed(int param_1) + { + if (0 < param_1) { + this->entityArray[param_1].logicalState = 3; + this->entityArray[param_1].someCounter_OR_hitGround = 10; + } + } + + } +} +} diff --git a/src/OpenSHC/Map/Entities/EntityState/reassignEntitiesOwner.cpp b/src/OpenSHC/Map/Entities/EntityState/reassignEntitiesOwner.cpp new file mode 100644 index 000000000..b2a5e3ced --- /dev/null +++ b/src/OpenSHC/Map/Entities/EntityState/reassignEntitiesOwner.cpp @@ -0,0 +1,19 @@ +#include "../EntityState.func.hpp" + +namespace OpenSHC { +namespace Map { + namespace Entities { + + // FUNCTION: STRONGHOLDCRUSADER 0x00401AE0 + void EntityState::reassignEntitiesOwner(int param_1, undefined4 param_2) + { + for (int index = 1; index < 3000; index++) { + if ((this->entityArray[index].logicalState == 2) && (this->entityArray[index].owner == param_1)) { + this->entityArray[index].owner = param_2; + } + } + } + + } +} +} diff --git a/src/OpenSHC/Map/Entities/EntityState/tickEntityDecayCounter.cpp b/src/OpenSHC/Map/Entities/EntityState/tickEntityDecayCounter.cpp new file mode 100644 index 000000000..883d41da4 --- /dev/null +++ b/src/OpenSHC/Map/Entities/EntityState/tickEntityDecayCounter.cpp @@ -0,0 +1,20 @@ +#include "../EntityState.func.hpp" + +namespace OpenSHC { +namespace Map { + namespace Entities { + + // FUNCTION: STRONGHOLDCRUSADER 0x00401430 + void EntityState::tickEntityDecayCounter(int param_1) + { + short sVar1 = this->entityArray[param_1].unkMinusOne; + if (0x1f <= sVar1) { + this->entityArray[param_1].logicalState = 3; + return; + } + this->entityArray[param_1].unkMinusOne = sVar1 + 1; + } + + } +} +} diff --git a/src/OpenSHC/Map/Entities/IgniteFireAtMiniTile_Convenience.cpp b/src/OpenSHC/Map/Entities/IgniteFireAtMiniTile_Convenience.cpp new file mode 100644 index 000000000..6083bfd20 --- /dev/null +++ b/src/OpenSHC/Map/Entities/IgniteFireAtMiniTile_Convenience.cpp @@ -0,0 +1,15 @@ +#include "OpenSHC/Map/Entities.func.hpp" + +namespace OpenSHC { +namespace Map { + + // FUNCTION: STRONGHOLDCRUSADER 0x00407130 + uint Entities::IgniteFireAtMiniTile_Convenience( + int playerID, int miniTileX, int miniTileY, int tileHeightMin8, int two) + { + return MACRO_CALL(OpenSHC::Map::Entities_Func::IgniteFireAtMiniTile)( + playerID, miniTileX, miniTileY, tileHeightMin8, two, 0); + } + +} +} diff --git a/src/OpenSHC/Map/Entities/SetPlaceOnFire.cpp b/src/OpenSHC/Map/Entities/SetPlaceOnFire.cpp new file mode 100644 index 000000000..60ebf70f4 --- /dev/null +++ b/src/OpenSHC/Map/Entities/SetPlaceOnFire.cpp @@ -0,0 +1,13 @@ +#include "OpenSHC/Map/Entities.func.hpp" + +namespace OpenSHC { +namespace Map { + + // FUNCTION: STRONGHOLDCRUSADER 0x00407160 + void Entities::SetPlaceOnFire(int playerID, int x, int y, int height, int param_5) + { + MACRO_CALL(OpenSHC::Map::Entities_Func::AFireSpreadFunction)(playerID, x, y, height, param_5, 0); + } + +} +} diff --git a/src/OpenSHC/Map/Entities/UpdateBrazierEntity.cpp b/src/OpenSHC/Map/Entities/UpdateBrazierEntity.cpp new file mode 100644 index 000000000..985a7a94f --- /dev/null +++ b/src/OpenSHC/Map/Entities/UpdateBrazierEntity.cpp @@ -0,0 +1,19 @@ +#include "OpenSHC/Map/Entities.func.hpp" + +#include "OpenSHC/Globals/DAT_CurrentEntityID.hpp" +#include "OpenSHC/Globals/DAT_EntityState.hpp" + +namespace OpenSHC { +namespace Map { + + // FUNCTION: STRONGHOLDCRUSADER 0x00402AB0 + void Entities::UpdateBrazierEntity() + { + DAT_EntityState::instance.entityArray[DAT_CurrentEntityID::instance].graphicType2 + = ((byte)DAT_EntityState::instance.entityArray[DAT_CurrentEntityID::instance].unknownAnimationFrameRelated + & 7) + + DAT_EntityState::instance.entityArray[DAT_CurrentEntityID::instance].graphicType2RelatedOffset; + } + +} +} diff --git a/src/OpenSHC/Map/LandscapeState/constructLandscapeState.cpp b/src/OpenSHC/Map/LandscapeState/constructLandscapeState.cpp new file mode 100644 index 000000000..383c8b954 --- /dev/null +++ b/src/OpenSHC/Map/LandscapeState/constructLandscapeState.cpp @@ -0,0 +1,20 @@ +#include "OpenSHC/Map/LandscapeState.func.hpp" +#include "OpenSHC/Map/LandscapeState.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::Map::LandscapeState; + + // FUNCTION: STRONGHOLDCRUSADER 0x004F3930 + LandscapeState* LandscapeState::constructLandscapeState() + { + this->creationTime = timeGetTime(); + MACRO_CALL_MEMBER(OpenSHC::Map::LandscapeState_Func::clearRocksAndTrees, this)(); + MACRO_CALL_MEMBER(OpenSHC::Map::LandscapeState_Func::resetWind, this)(); + this->field1_0x4 = 1; + return this; + } + +} +} diff --git a/src/OpenSHC/Map/LandscapeState/getRandomRockImageOffset.cpp b/src/OpenSHC/Map/LandscapeState/getRandomRockImageOffset.cpp new file mode 100644 index 000000000..e223377e6 --- /dev/null +++ b/src/OpenSHC/Map/LandscapeState/getRandomRockImageOffset.cpp @@ -0,0 +1,15 @@ +#include "OpenSHC/Map/LandscapeState.func.hpp" + +#include "OpenSHC/Globals/DAT_OrganismDefinedData.hpp" + +namespace OpenSHC { +namespace Map { + + // FUNCTION: STRONGHOLDCRUSADER 0x004F2A10 + int LandscapeState::getRandomRockImageOffset(int param_1) + { + return DAT_OrganismDefinedData::instance.RandomRockImageGMImageOffsets[param_1]; + } + +} +} diff --git a/src/OpenSHC/Map/LandscapeState/isTreeAdult.cpp b/src/OpenSHC/Map/LandscapeState/isTreeAdult.cpp new file mode 100644 index 000000000..fb765ba1f --- /dev/null +++ b/src/OpenSHC/Map/LandscapeState/isTreeAdult.cpp @@ -0,0 +1,19 @@ +#include "OpenSHC/Map/LandscapeState.func.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x004F2FE0 + BOOLEnum LandscapeState::isTreeAdult(int treeID, int treeUID) + { + if (this->trees[treeID].uid != treeUID) { + return FALSE; + } + return 0 < (short)this->trees[treeID].treeAdultHoodStageRelatedVisual3; + } + +} +} diff --git a/src/OpenSHC/Map/LandscapeState/isTreeAliveAndMatchingUID.cpp b/src/OpenSHC/Map/LandscapeState/isTreeAliveAndMatchingUID.cpp new file mode 100644 index 000000000..96f3cd016 --- /dev/null +++ b/src/OpenSHC/Map/LandscapeState/isTreeAliveAndMatchingUID.cpp @@ -0,0 +1,16 @@ +#include "OpenSHC/Map/LandscapeState.func.hpp" + +namespace OpenSHC { +namespace Map { + + // FUNCTION: STRONGHOLDCRUSADER 0x004F2FB0 + uint LandscapeState::isTreeAliveAndMatchingUID(int treeID, int param_2) + { + if (this->trees[treeID].uid != param_2) { + return FALSE; + } + return this->trees[treeID].zeroUpTo2 == 0; + } + +} +} diff --git a/src/OpenSHC/Map/LandscapeState/resetWind.cpp b/src/OpenSHC/Map/LandscapeState/resetWind.cpp new file mode 100644 index 000000000..d7c186a31 --- /dev/null +++ b/src/OpenSHC/Map/LandscapeState/resetWind.cpp @@ -0,0 +1,17 @@ +#include "OpenSHC/Map/LandscapeState.func.hpp" + +namespace OpenSHC { +namespace Map { + + // FUNCTION: STRONGHOLDCRUSADER 0x004F3700 + void LandscapeState::resetWind() + { + this->wind.value = 0; + this->wind.index = 0; + this->wind.countdown = 0; + this->wind.field4_0x10 = 0; + this->wind.counter = 0; + } + +} +} diff --git a/src/OpenSHC/Map/LandscapeState/upgradeTreesAndRocksForMapVersion.cpp b/src/OpenSHC/Map/LandscapeState/upgradeTreesAndRocksForMapVersion.cpp new file mode 100644 index 000000000..c041bcb9d --- /dev/null +++ b/src/OpenSHC/Map/LandscapeState/upgradeTreesAndRocksForMapVersion.cpp @@ -0,0 +1,23 @@ +#include "OpenSHC/Map/LandscapeState.func.hpp" +#include "OpenSHC/Map/Version.func.hpp" +#include "OpenSHC/IO/PackagedFileMagicNum.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::IO::PackagedFileMagicNum; + + // FUNCTION: STRONGHOLDCRUSADER 0x004F3D30 + void LandscapeState::upgradeTreesAndRocksForMapVersion( + PackagedFileMagicNum receivedMapVersion, PackagedFileMagicNum packagerMapVersion) + { + MACRO_CALL(OpenSHC::Map::Version_Func::UpdateTreesOfCertainTypes)(); + MACRO_CALL(OpenSHC::Map::Version_Func::UpdateFixTrees2)(); + MACRO_CALL(OpenSHC::Map::Version_Func::UpgradeRemoveCertainRockTypesUnk)(); + if ((receivedMapVersion != packagerMapVersion) && ((int)receivedMapVersion < 0xa5)) { + MACRO_CALL(OpenSHC::Map::Version_Func::UpgradeRemoveRocksBeyond1000)(); + } + } + +} +} diff --git a/src/OpenSHC/Map/MapPropertiesState/isMercRecruitableForBuildingType.cpp b/src/OpenSHC/Map/MapPropertiesState/isMercRecruitableForBuildingType.cpp new file mode 100644 index 000000000..7579a35fe --- /dev/null +++ b/src/OpenSHC/Map/MapPropertiesState/isMercRecruitableForBuildingType.cpp @@ -0,0 +1,22 @@ +#include "OpenSHC/Map/MapPropertiesState.func.hpp" +#include "OpenSHC/Game/GameMode2.hpp" + +#include "OpenSHC/Globals/DAT_GameCore.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::Game::GameMode2; + + // FUNCTION: STRONGHOLDCRUSADER 0x004BB0B0 + int MapPropertiesState::isMercRecruitableForBuildingType(int param_1) + { + int iVar1 = 1; + if (DAT_GameCore::instance.gameMode_2 != OpenSHC::Game::GM_EDITOR) { + iVar1 = ((short*)&this->field10_0x520)[param_1]; + } + return iVar1; + } + +} +} diff --git a/src/OpenSHC/Map/MapPropertiesState/isValueInRangeOneToTwenty.cpp b/src/OpenSHC/Map/MapPropertiesState/isValueInRangeOneToTwenty.cpp new file mode 100644 index 000000000..f27b663ac --- /dev/null +++ b/src/OpenSHC/Map/MapPropertiesState/isValueInRangeOneToTwenty.cpp @@ -0,0 +1,13 @@ +#include "OpenSHC/Map/MapPropertiesState.func.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x004B77E0 + BOOLEnum MapPropertiesState::isValueInRangeOneToTwenty(int param_1) { return param_1 + -1 < 20; } + +} +} diff --git a/src/OpenSHC/Map/MapPropertiesState/mapHasCertainEvent.cpp b/src/OpenSHC/Map/MapPropertiesState/mapHasCertainEvent.cpp new file mode 100644 index 000000000..53ea7688b --- /dev/null +++ b/src/OpenSHC/Map/MapPropertiesState/mapHasCertainEvent.cpp @@ -0,0 +1,27 @@ +#include "OpenSHC/Map/MapPropertiesState.func.hpp" + +namespace OpenSHC { +namespace Map { + + // FUNCTION: STRONGHOLDCRUSADER 0x004B7890 + undefined4 MapPropertiesState::mapHasCertainEvent() + { + int iVar1; + int* piVar2; + + iVar1 = 0; + if (0 < this->eventsCount) { + piVar2 = &this->scenarioEvents[0].header.tl_type; + do { + if (*piVar2 == 1) { + return (undefined4)(1); + } + iVar1 = iVar1 + 1; + piVar2 = piVar2 + 0x39; + } while (iVar1 < this->eventsCount); + } + return (undefined4)(0); + } + +} +} diff --git a/src/OpenSHC/Map/MapPropertiesState/openEventTriggerMenu.cpp b/src/OpenSHC/Map/MapPropertiesState/openEventTriggerMenu.cpp new file mode 100644 index 000000000..342e014b7 --- /dev/null +++ b/src/OpenSHC/Map/MapPropertiesState/openEventTriggerMenu.cpp @@ -0,0 +1,26 @@ +#include "OpenSHC/Game/ScenarioEvents/InGameEventUnionVersion.func.hpp" +#include "OpenSHC/Map/MapPropertiesState.func.hpp" +#include "OpenSHC/UI/MenuTextInputState.func.hpp" +#include "OpenSHC/Game/ScenarioEvents/InGameEventUnionVersion.hpp" +#include "OpenSHC/UI/Enums/MenuModalType.hpp" + +#include "OpenSHC/Globals/DAT_MenuTextInputState.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::Game::ScenarioEvents::InGameEventUnionVersion; + using OpenSHC::UI::Enums::MenuModalType; + + // FUNCTION: STRONGHOLDCRUSADER 0x004BB9F0 + void MapPropertiesState::openEventTriggerMenu(undefined4 eventType) + { + this->eventType = eventType; + MACRO_CALL_MEMBER(OpenSHC::Game::ScenarioEvents::InGameEventUnionVersion_Func::resetEvent, + (InGameEventUnionVersion*)&this->invasionEvent)(); + MACRO_CALL_MEMBER(OpenSHC::UI::MenuTextInputState_Func::activateModalDialogAndClearText, + DAT_MenuTextInputState::ptr)(OpenSHC::UI::Enums::MMT_TRIGGER_EVENT_OR_INVASION); + } + +} +} diff --git a/src/OpenSHC/Map/MapPropertiesState/sumInvasionEventUnitCount.cpp b/src/OpenSHC/Map/MapPropertiesState/sumInvasionEventUnitCount.cpp new file mode 100644 index 000000000..a4c5070a0 --- /dev/null +++ b/src/OpenSHC/Map/MapPropertiesState/sumInvasionEventUnitCount.cpp @@ -0,0 +1,23 @@ +#include "OpenSHC/Map/MapPropertiesState.func.hpp" + +namespace OpenSHC { +namespace Map { + + // FUNCTION: STRONGHOLDCRUSADER 0x004BBA20 + void MapPropertiesState::sumInvasionEventUnitCount() + { + int* piVar1; + int* piVar2; + + this->DAT_InvasionEventItemUnitCountSum = 0; + piVar1 = this->invasionEventContent.unitCountsPerUnitType + 3; + do { + piVar2 = piVar1 + 5; + this->DAT_InvasionEventItemUnitCountSum + = this->DAT_InvasionEventItemUnitCountSum + piVar1[-3] + piVar1[-2] + piVar1[-1] + piVar1[1] + *piVar1; + piVar1 = piVar2; + } while ((int)piVar2 < 0x1667ebc); + } + +} +} diff --git a/src/OpenSHC/Map/Navigation/DirectionAlgorithmState/computeHealthPercentage.cpp b/src/OpenSHC/Map/Navigation/DirectionAlgorithmState/computeHealthPercentage.cpp new file mode 100644 index 000000000..62f5b13e0 --- /dev/null +++ b/src/OpenSHC/Map/Navigation/DirectionAlgorithmState/computeHealthPercentage.cpp @@ -0,0 +1,18 @@ +#include "../DirectionAlgorithmState.func.hpp" + +namespace OpenSHC { +namespace Map { + namespace Navigation { + + // FUNCTION: STRONGHOLDCRUSADER 0x004092C0 + int DirectionAlgorithmState::computeHealthPercentage(int param_1, int param_2) + { + if (param_2 == 0) { + return 100; + } + return (param_1 * 100) / param_2; + } + + } +} +} diff --git a/src/OpenSHC/Map/Navigation/PathFindingState/bindPathPlanToAlgorithmStateAndReset.cpp b/src/OpenSHC/Map/Navigation/PathFindingState/bindPathPlanToAlgorithmStateAndReset.cpp new file mode 100644 index 000000000..def1d655f --- /dev/null +++ b/src/OpenSHC/Map/Navigation/PathFindingState/bindPathPlanToAlgorithmStateAndReset.cpp @@ -0,0 +1,16 @@ +#include "OpenSHC/Map/Navigation/PathFindingState.func.hpp" + +namespace OpenSHC { +namespace Map { + namespace Navigation { + + // FUNCTION: STRONGHOLDCRUSADER 0x00496EA0 + void PathFindingState::bindPathPlanToAlgorithmStateAndReset(byte* pPathPlan) + { + this->searchQueue.ptrPathPlan = pPathPlan; + this->searchQueue.pathPlanIndex = 0; + } + + } +} +} diff --git a/src/OpenSHC/Map/Navigation/PathFindingState/clearAllClimbData.cpp b/src/OpenSHC/Map/Navigation/PathFindingState/clearAllClimbData.cpp new file mode 100644 index 000000000..29a8fb674 --- /dev/null +++ b/src/OpenSHC/Map/Navigation/PathFindingState/clearAllClimbData.cpp @@ -0,0 +1,18 @@ +#include "OpenSHC/Map/Navigation/PathFindingState.func.hpp" + +namespace OpenSHC { +namespace Map { + namespace Navigation { + + // FUNCTION: STRONGHOLDCRUSADER 0x004A94E0 + void PathFindingState::clearAllClimbData() + { + this->numberOfClimbTeleports = 0; + for (int iVar1 = 0; iVar1 < 200; iVar1++) { + MACRO_CALL_MEMBER(OpenSHC::Map::Navigation::PathFindingState_Func::clearClimbData, this)(iVar1); + } + } + + } +} +} diff --git a/src/OpenSHC/Map/Navigation/PathFindingState/clearClimbData.cpp b/src/OpenSHC/Map/Navigation/PathFindingState/clearClimbData.cpp new file mode 100644 index 000000000..5d537d9db --- /dev/null +++ b/src/OpenSHC/Map/Navigation/PathFindingState/clearClimbData.cpp @@ -0,0 +1,19 @@ +#include "OpenSHC/IO/LowLevelMemory.func.hpp" +#include "OpenSHC/Map/Navigation/PathFindingState.func.hpp" + +#include "OpenSHC/Globals/DAT_LowLevelMemory.hpp" + +namespace OpenSHC { +namespace Map { + namespace Navigation { + + // FUNCTION: STRONGHOLDCRUSADER 0x004A4B80 + void PathFindingState::clearClimbData(int param_1) + { + MACRO_CALL_MEMBER(OpenSHC::IO::LowLevelMemory_Func::fillMemory_ByteValue, DAT_LowLevelMemory::ptr)( + 0x204, 0, &this->climbData[param_1]); + } + + } +} +} diff --git a/src/OpenSHC/Map/Navigation/PathFindingState/getComputationalTileIndex.cpp b/src/OpenSHC/Map/Navigation/PathFindingState/getComputationalTileIndex.cpp new file mode 100644 index 000000000..b5329ac1f --- /dev/null +++ b/src/OpenSHC/Map/Navigation/PathFindingState/getComputationalTileIndex.cpp @@ -0,0 +1,12 @@ +#include "OpenSHC/Map/Navigation/PathFindingState.hpp" + +namespace OpenSHC { +namespace Map { + namespace Navigation { + + // FUNCTION: STRONGHOLDCRUSADER 0x00496E20 + undefined4 PathFindingState::getComputationalTileIndex() { return this->searchQueue.writeIndex; } + + } // namespace Navigation +} // namespace Map +} // namespace OpenSHC diff --git a/src/OpenSHC/Map/Navigation/PathFindingState/getTileInSearchQueue.cpp b/src/OpenSHC/Map/Navigation/PathFindingState/getTileInSearchQueue.cpp new file mode 100644 index 000000000..1b76cae82 --- /dev/null +++ b/src/OpenSHC/Map/Navigation/PathFindingState/getTileInSearchQueue.cpp @@ -0,0 +1,12 @@ +#include "OpenSHC/Map/Navigation/PathFindingState.func.hpp" + +namespace OpenSHC { +namespace Map { + namespace Navigation { + + // FUNCTION: STRONGHOLDCRUSADER 0x00496E30 + int PathFindingState::getTileInSearchQueue(int index) { return this->searchQueue.tilesQueue[index]; } + + } +} +} diff --git a/src/OpenSHC/Map/Navigation/PathFindingState/getYSmallerThanYLimit.cpp b/src/OpenSHC/Map/Navigation/PathFindingState/getYSmallerThanYLimit.cpp new file mode 100644 index 000000000..7e1e89c5a --- /dev/null +++ b/src/OpenSHC/Map/Navigation/PathFindingState/getYSmallerThanYLimit.cpp @@ -0,0 +1,15 @@ +#include "OpenSHC/Map/Navigation/PathFindingState.func.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +namespace OpenSHC { +namespace Map { + namespace Navigation { + + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x0049B1C0 + BOOLEnum PathFindingState::getYSmallerThanYLimit() { return this->mappingYRelated <= this->yLimit; } + + } +} +} diff --git a/src/OpenSHC/Map/Navigation/PathFindingState/retraceAndCommitPathPlan.cpp b/src/OpenSHC/Map/Navigation/PathFindingState/retraceAndCommitPathPlan.cpp new file mode 100644 index 000000000..592967e90 --- /dev/null +++ b/src/OpenSHC/Map/Navigation/PathFindingState/retraceAndCommitPathPlan.cpp @@ -0,0 +1,18 @@ +#include "OpenSHC/Map/Navigation/PathFindingState.func.hpp" + +namespace OpenSHC { +namespace Map { + namespace Navigation { + + // FUNCTION: STRONGHOLDCRUSADER 0x004A9DD0 + undefined4 PathFindingState::retraceAndCommitPathPlan() + { + this->searchQueue.pathPlanIndex = 0; + MACRO_CALL_MEMBER(OpenSHC::Map::Navigation::PathFindingState_Func::traceAndCommitPathPlan, this)( + this->unitX, this->unitY, this->destinationX, this->destinationY, 0); + return this->searchQueue.pathPlanIndex; + } + + } +} +} diff --git a/src/OpenSHC/Map/Navigation/PathFindingState/updatePathLinkageLayerForEachBuildingAtEachTile.cpp b/src/OpenSHC/Map/Navigation/PathFindingState/updatePathLinkageLayerForEachBuildingAtEachTile.cpp new file mode 100644 index 000000000..4004e28f7 --- /dev/null +++ b/src/OpenSHC/Map/Navigation/PathFindingState/updatePathLinkageLayerForEachBuildingAtEachTile.cpp @@ -0,0 +1,21 @@ +#include "OpenSHC/Map/Navigation/PathFindingState.func.hpp" + +#include "OpenSHC/Globals/DAT_ViewportRenderState.hpp" + +namespace OpenSHC { +namespace Map { + namespace Navigation { + + // FUNCTION: STRONGHOLDCRUSADER 0x004A5F60 + void PathFindingState::updatePathLinkageLayerForEachBuildingAtEachTile() + { + for (int _tileIndex = 0; _tileIndex < 80400; _tileIndex++) { + MACRO_CALL_MEMBER( + OpenSHC::Map::Navigation::PathFindingState_Func::updatePathLinkageLayerBasedOnBuildingsUnk, this)( + DAT_ViewportRenderState::instance.tileTranslationMatrix_YComponent[_tileIndex], _tileIndex); + } + } + + } +} +} diff --git a/src/OpenSHC/Map/TileMapState/clearMoatData.cpp b/src/OpenSHC/Map/TileMapState/clearMoatData.cpp new file mode 100644 index 000000000..464b61401 --- /dev/null +++ b/src/OpenSHC/Map/TileMapState/clearMoatData.cpp @@ -0,0 +1,21 @@ +#include "OpenSHC/IO/LowLevelMemory.func.hpp" +#include "OpenSHC/Map/TileMapState.func.hpp" + +#include "OpenSHC/Globals/DAT_LowLevelMemory.hpp" + +namespace OpenSHC { +namespace Map { + + // FUNCTION: STRONGHOLDCRUSADER 0x005002D0 + void TileMapState::clearMoatData(uint moatID) + { + if (moatID > 15999) { + return; + } + MACRO_CALL_MEMBER(OpenSHC::IO::LowLevelMemory_Func::fillMemory_ByteValue, DAT_LowLevelMemory::ptr)( + 0x10, 0, &this->moats[moatID]); + this->moatTileCount -= 1; + } + +} +} diff --git a/src/OpenSHC/Map/TileMapState/forceFullTileMapRedraw.cpp b/src/OpenSHC/Map/TileMapState/forceFullTileMapRedraw.cpp new file mode 100644 index 000000000..50d530182 --- /dev/null +++ b/src/OpenSHC/Map/TileMapState/forceFullTileMapRedraw.cpp @@ -0,0 +1,16 @@ +#include "OpenSHC/Map/TileMapState.func.hpp" + +namespace OpenSHC { +namespace Map { + + // FUNCTION: STRONGHOLDCRUSADER 0x005017A0 + void TileMapState::forceFullTileMapRedraw() + { + this->forceUpdateLogicalAndMiscDisplayLayers = 1; + this->forceUpdateTextureTilemap = 1; + this->forceUpdateGFXLayers = 1; + MACRO_CALL_MEMBER(OpenSHC::Map::TileMapState_Func::setChangedLayerToThreeAndMapping0x40x40, this)(); + } + +} +} diff --git a/src/OpenSHC/Map/TileMapState/getUnownedMoatCount.cpp b/src/OpenSHC/Map/TileMapState/getUnownedMoatCount.cpp new file mode 100644 index 000000000..352e8297a --- /dev/null +++ b/src/OpenSHC/Map/TileMapState/getUnownedMoatCount.cpp @@ -0,0 +1,21 @@ +#include "OpenSHC/Map/TileMapState.hpp" + +namespace OpenSHC { +namespace Map { + + // FUNCTION: STRONGHOLDCRUSADER 0x00500210 + int TileMapState::getUnownedMoatCount() + { + int unownedMoatCount = 0; + + for (int i = 1; i < 16000; i++) { + if (this->moats[i].owner == 0) { + unownedMoatCount += 1; + } + } + + return unownedMoatCount; + } + +} // namespace Map +} // namespace OpenSHC diff --git a/src/OpenSHC/Map/TileMapState/processDamageToBuildingThunk.cpp b/src/OpenSHC/Map/TileMapState/processDamageToBuildingThunk.cpp new file mode 100644 index 000000000..9a0c3244a --- /dev/null +++ b/src/OpenSHC/Map/TileMapState/processDamageToBuildingThunk.cpp @@ -0,0 +1,19 @@ +#include "../TileMapState.func.hpp" + +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x00409300 + BOOLEnum TileMapState::processDamageToBuildingThunk(int targetedTile, uint targetedTileX, uint targetedTileY, + int damage, int param_5, int playerID, BOOLEnum aiBuildDelayRelated) + { + return MACRO_CALL_MEMBER(OpenSHC::Map::TileMapState_Func::processDamageToBuilding, this)( + targetedTile, targetedTileX, targetedTileY, damage, param_5, playerID, aiBuildDelayRelated, 0); + } + +} +} diff --git a/src/OpenSHC/Map/TileMapState/processEntityDamageToBuildingCollateralThunk.cpp b/src/OpenSHC/Map/TileMapState/processEntityDamageToBuildingCollateralThunk.cpp new file mode 100644 index 000000000..1f8d85fee --- /dev/null +++ b/src/OpenSHC/Map/TileMapState/processEntityDamageToBuildingCollateralThunk.cpp @@ -0,0 +1,15 @@ +#include "../TileMapState.func.hpp" + +namespace OpenSHC { +namespace Map { + + // FUNCTION: STRONGHOLDCRUSADER 0x00401060 + void TileMapState::processEntityDamageToBuildingCollateralThunk( + int tile, uint x_2, uint y_2, int damage, int playerID, undefined4 unused) + { + MACRO_CALL_MEMBER(OpenSHC::Map::TileMapState_Func::processEntityDamageToBuildingCollateral, this)( + tile, x_2, y_2, damage, playerID, unused, 0); + } + +} +} diff --git a/src/OpenSHC/Map/TileMapState/processMapOrientationChange.cpp b/src/OpenSHC/Map/TileMapState/processMapOrientationChange.cpp new file mode 100644 index 000000000..c7d16dd48 --- /dev/null +++ b/src/OpenSHC/Map/TileMapState/processMapOrientationChange.cpp @@ -0,0 +1,17 @@ +#include "OpenSHC/Map/TileMapState.func.hpp" + +namespace OpenSHC { +namespace Map { + + // FUNCTION: STRONGHOLDCRUSADER 0x00512920 + void TileMapState::processMapOrientationChange() + { + if (this->DAT_FutureMapOrientation < 8) { + MACRO_CALL_MEMBER(OpenSHC::Map::TileMapState_Func::changeMapOrientation, this)( + this->DAT_FutureMapOrientation); + this->DAT_FutureMapOrientation = 8; + } + } + +} +} diff --git a/src/OpenSHC/Map/TileMapState/recountTotalOwnedMoats.cpp b/src/OpenSHC/Map/TileMapState/recountTotalOwnedMoats.cpp new file mode 100644 index 000000000..43472a4d1 --- /dev/null +++ b/src/OpenSHC/Map/TileMapState/recountTotalOwnedMoats.cpp @@ -0,0 +1,19 @@ +#include "OpenSHC/Map/TileMapState.func.hpp" + +namespace OpenSHC { +namespace Map { + + // FUNCTION: STRONGHOLDCRUSADER 0x005000A0 + void TileMapState::recountTotalOwnedMoats() + { + this->currentMoatCount = 0; + for (int i = 1; i < 16000; i++) { + if (this->moats[i].owner != 0) { + // fixme: this must be wrong, but it is 100% Why not this->currentMoatCount += 1 ? + this->currentMoatCount = i + 1; + } + } + } + +} +} diff --git a/src/OpenSHC/Map/TileMapState/resetMoatArray.cpp b/src/OpenSHC/Map/TileMapState/resetMoatArray.cpp new file mode 100644 index 000000000..5e1aaa024 --- /dev/null +++ b/src/OpenSHC/Map/TileMapState/resetMoatArray.cpp @@ -0,0 +1,23 @@ +#include "OpenSHC/IO/LowLevelMemory.func.hpp" +#include "OpenSHC/Map/TileMapState.func.hpp" +#include "OpenSHC/Map/Moat.hpp" + +#include "OpenSHC/Globals/DAT_LowLevelMemory.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::Map::Moat; + + // FUNCTION: STRONGHOLDCRUSADER 0x00500680 + void TileMapState::resetMoatArray() + { + for (int i = 0; i < 16000; i++) { + MACRO_CALL_MEMBER(OpenSHC::IO::LowLevelMemory_Func::fillMemory_ByteValue, DAT_LowLevelMemory::ptr)( + 0x10, 0, &this->moats[i]); + } + this->moatTileCount = 0; + } + +} +} diff --git a/src/OpenSHC/Map/TileMapState/resetPitchDitchArray.cpp b/src/OpenSHC/Map/TileMapState/resetPitchDitchArray.cpp new file mode 100644 index 000000000..d2a39514d --- /dev/null +++ b/src/OpenSHC/Map/TileMapState/resetPitchDitchArray.cpp @@ -0,0 +1,23 @@ +#include "OpenSHC/IO/LowLevelMemory.func.hpp" +#include "OpenSHC/Map/TileMapState.func.hpp" +#include "OpenSHC/Map/PitchDitch.hpp" + +#include "OpenSHC/Globals/DAT_LowLevelMemory.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::Map::PitchDitch; + + // FUNCTION: STRONGHOLDCRUSADER 0x005007D0 + void TileMapState::resetPitchDitchArray() + { + this->maxPitchDitchCount = 4000; + for (int i = 0; i < 4000; i++) { + MACRO_CALL_MEMBER(OpenSHC::IO::LowLevelMemory_Func::fillMemory_ByteValue, DAT_LowLevelMemory::ptr)( + 0x14, 0, &this->pitchDitches[i]); + } + } + +} +} diff --git a/src/OpenSHC/Map/TileMapState/setMapRotation.cpp b/src/OpenSHC/Map/TileMapState/setMapRotation.cpp new file mode 100644 index 000000000..2aa68190e --- /dev/null +++ b/src/OpenSHC/Map/TileMapState/setMapRotation.cpp @@ -0,0 +1,10 @@ +#include "../TileMapState.func.hpp" + +namespace OpenSHC { +namespace Map { + + // FUNCTION: STRONGHOLDCRUSADER 0x004F70E0 + void TileMapState::setMapRotation(undefined4 newRotation) { this->DAT_FutureMapOrientation = newRotation; } + +} +} diff --git a/src/OpenSHC/Map/TileMapState/setMoatOwnerForAllMatching.cpp b/src/OpenSHC/Map/TileMapState/setMoatOwnerForAllMatching.cpp new file mode 100644 index 000000000..142f0f4e4 --- /dev/null +++ b/src/OpenSHC/Map/TileMapState/setMoatOwnerForAllMatching.cpp @@ -0,0 +1,17 @@ +#include "OpenSHC/Map/TileMapState.func.hpp" + +namespace OpenSHC { +namespace Map { + + // FUNCTION: STRONGHOLDCRUSADER 0x00500750 + void TileMapState::setMoatOwnerForAllMatching(int param_1, undefined4 param_2) + { + for (int i = 1; i < 16000; i++) { + if (this->moats[i].owner != 0 && this->moats[i].owner == param_1) { + this->moats[i].owner = param_2; + } + } + } + +} +} diff --git a/src/OpenSHC/Map/TileMapState/setMoatVisualStateAtTile.cpp b/src/OpenSHC/Map/TileMapState/setMoatVisualStateAtTile.cpp new file mode 100644 index 000000000..87ca49d47 --- /dev/null +++ b/src/OpenSHC/Map/TileMapState/setMoatVisualStateAtTile.cpp @@ -0,0 +1,16 @@ +#include "OpenSHC/Map/TileMapState.func.hpp" + +namespace OpenSHC { +namespace Map { + + // FUNCTION: STRONGHOLDCRUSADER 0x00500720 + void TileMapState::setMoatVisualStateAtTile(int tile, undefined4 zeroOrTwo) + { + int iVar1 = MACRO_CALL_MEMBER(OpenSHC::Map::TileMapState_Func::returnOwnedMoatAtTile, this)(tile); + if (iVar1 != 0) { + this->moats[iVar1].zeroOrTwo = zeroOrTwo; + } + } + +} +} diff --git a/src/OpenSHC/Map/TileMapState/spreadBrazierPlacementAlgorithm.cpp b/src/OpenSHC/Map/TileMapState/spreadBrazierPlacementAlgorithm.cpp new file mode 100644 index 000000000..3c1637395 --- /dev/null +++ b/src/OpenSHC/Map/TileMapState/spreadBrazierPlacementAlgorithm.cpp @@ -0,0 +1,17 @@ +#include "OpenSHC/Map/Navigation/PathFindingState.func.hpp" +#include "OpenSHC/Map/TileMapState.func.hpp" + +#include "OpenSHC/Globals/DAT_PathFindingState.hpp" + +namespace OpenSHC { +namespace Map { + + // FUNCTION: STRONGHOLDCRUSADER 0x005011A0 + void TileMapState::spreadBrazierPlacementAlgorithm(int playerID, uint x, uint y) + { + MACRO_CALL_MEMBER(OpenSHC::Map::Navigation::PathFindingState_Func::spreadAlgorithmForFlagsAndBraziersUnk, + DAT_PathFindingState::ptr)(playerID, x, y, 4, 1); + } + +} +} diff --git a/src/OpenSHC/Map/TileMapState/spreadFlagPlacementAlgorithm.cpp b/src/OpenSHC/Map/TileMapState/spreadFlagPlacementAlgorithm.cpp new file mode 100644 index 000000000..5080c5500 --- /dev/null +++ b/src/OpenSHC/Map/TileMapState/spreadFlagPlacementAlgorithm.cpp @@ -0,0 +1,17 @@ +#include "OpenSHC/Map/Navigation/PathFindingState.func.hpp" +#include "OpenSHC/Map/TileMapState.func.hpp" + +#include "OpenSHC/Globals/DAT_PathFindingState.hpp" + +namespace OpenSHC { +namespace Map { + + // FUNCTION: STRONGHOLDCRUSADER 0x00501180 + int TileMapState::spreadFlagPlacementAlgorithm(int param_1, uint param_2, uint param_3) + { + return MACRO_CALL_MEMBER(OpenSHC::Map::Navigation::PathFindingState_Func::spreadAlgorithmForFlagsAndBraziersUnk, + DAT_PathFindingState::ptr)(param_1, param_2, param_3, 4, 0); + } + +} +} diff --git a/src/OpenSHC/Map/TileMapState/toggleFlatView.cpp b/src/OpenSHC/Map/TileMapState/toggleFlatView.cpp new file mode 100644 index 000000000..becb26288 --- /dev/null +++ b/src/OpenSHC/Map/TileMapState/toggleFlatView.cpp @@ -0,0 +1,16 @@ +#include "OpenSHC/Map/TileMapState.func.hpp" + +namespace OpenSHC { +namespace Map { + + // FUNCTION: STRONGHOLDCRUSADER 0x004F70B0 + void TileMapState::toggleFlatView(int param_1) + { + if (param_1 != this->flatViewToggleValue1) { + this->flatViewToggleValue1 = param_1; + this->flatViewToggleValue2 = param_1; + } + } + +} +} diff --git a/src/OpenSHC/Map/TileMapState/updateBuildingPlacementRotationPreview.cpp b/src/OpenSHC/Map/TileMapState/updateBuildingPlacementRotationPreview.cpp new file mode 100644 index 000000000..922487ac7 --- /dev/null +++ b/src/OpenSHC/Map/TileMapState/updateBuildingPlacementRotationPreview.cpp @@ -0,0 +1,19 @@ +#include "OpenSHC/Map/TileMapState.func.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x00504EE0 + void TileMapState::updateBuildingPlacementRotationPreview(int param_1, int param_2) + { + BOOLEnum _previous = this->buildingPlacementFail; + this->buildingPlacementFail = FALSE; + MACRO_CALL_MEMBER(OpenSHC::Map::TileMapState_Func::determineBuildingPlacementRotation, this)(param_1, param_2); + this->buildingPlacementFail = _previous; + } + +} +} diff --git a/src/OpenSHC/Map/TileMapState/updateMoatCountdownTimers.cpp b/src/OpenSHC/Map/TileMapState/updateMoatCountdownTimers.cpp new file mode 100644 index 000000000..4934a62aa --- /dev/null +++ b/src/OpenSHC/Map/TileMapState/updateMoatCountdownTimers.cpp @@ -0,0 +1,21 @@ +#include "OpenSHC/Map/TileMapState.func.hpp" +#include "OpenSHC/Map/Moat.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::Map::Moat; + + // FUNCTION: STRONGHOLDCRUSADER 0x00500640 + void TileMapState::updateMoatCountdownTimers() + { + MACRO_CALL_MEMBER(OpenSHC::Map::TileMapState_Func::recountTotalOwnedMoats, this)(); + for (int i = 0; i < this->currentMoatCount; i++) { + if (this->moats[i].owner != 0 && this->moats[i].someCountDown > 0) { + this->moats[i].someCountDown -= 1; + } + } + } + +} +} diff --git a/src/OpenSHC/Map/Trees/UpdateTree16.cpp b/src/OpenSHC/Map/Trees/UpdateTree16.cpp new file mode 100644 index 000000000..38fa7a941 --- /dev/null +++ b/src/OpenSHC/Map/Trees/UpdateTree16.cpp @@ -0,0 +1,18 @@ +#include "OpenSHC/Map/Trees.func.hpp" + +#include "OpenSHC/Globals/DAT_CurrentTreeID.hpp" +#include "OpenSHC/Globals/DAT_LandscapeState.hpp" + +namespace OpenSHC { +namespace Map { + + // FUNCTION: STRONGHOLDCRUSADER 0x004F28F0 + void Trees::UpdateTree16() + { + int iVar2 = (DAT_LandscapeState::instance.trees[DAT_CurrentTreeID::instance].rng1 & 7U) + 10; + DAT_LandscapeState::instance.trees[DAT_CurrentTreeID::instance].animationFrameUnk = iVar2; + DAT_LandscapeState::instance.trees[DAT_CurrentTreeID::instance].animationFrame2Unk = iVar2; + } + +} +} diff --git a/src/OpenSHC/Map/Units/CheckUnitProductionPaused.cpp b/src/OpenSHC/Map/Units/CheckUnitProductionPaused.cpp new file mode 100644 index 000000000..5c1b88a53 --- /dev/null +++ b/src/OpenSHC/Map/Units/CheckUnitProductionPaused.cpp @@ -0,0 +1,18 @@ +#include "OpenSHC/Map/Units.func.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +#include "OpenSHC/Globals/DAT_UnitsState.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x00530D50 + BOOLEnum Units::CheckUnitProductionPaused(int param_1) + { + return DAT_UnitsState::instance.units[param_1].field166_0x2fe == 1; + } + +} +} diff --git a/src/OpenSHC/Map/Units/TribesState/Constructor_TribesState.cpp b/src/OpenSHC/Map/Units/TribesState/Constructor_TribesState.cpp new file mode 100644 index 000000000..0e233370a --- /dev/null +++ b/src/OpenSHC/Map/Units/TribesState/Constructor_TribesState.cpp @@ -0,0 +1,23 @@ +#include "../TribesState.func.hpp" + +#include "OpenSHC/Map/Units/TribesState.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + using OpenSHC::Map::Units::TribesState; + + // FUNCTION: STRONGHOLDCRUSADER 0x00521180 + TribesState* TribesState::Constructor_TribesState() + { + this->constructorTime = timeGetTime(); + this->clans = 0; + this->fcn_mtribe = 0; + this->field2_0x8 = 1; + return this; + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/TribesState/addUnitToSelected.cpp b/src/OpenSHC/Map/Units/TribesState/addUnitToSelected.cpp new file mode 100644 index 000000000..8dbefc7c8 --- /dev/null +++ b/src/OpenSHC/Map/Units/TribesState/addUnitToSelected.cpp @@ -0,0 +1,22 @@ +#include "../TribesState.func.hpp" + +#include "OpenSHC/Globals/DAT_UnitSelectionDefinedData.hpp" +#include "OpenSHC/Globals/DAT_UnitsState.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + // FUNCTION: STRONGHOLDCRUSADER 0x00522520 + void TribesState::addUnitToSelected(uint unitID) + { + int index; + + index = (int)unitID / 16; + *(ushort*)(DAT_UnitsState::instance.selectedUnitsBitFlags + index * 2) + |= DAT_UnitSelectionDefinedData::instance.BitMaskHelper[(int)unitID % 16]; + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/TribesState/clearTribe.cpp b/src/OpenSHC/Map/Units/TribesState/clearTribe.cpp new file mode 100644 index 000000000..5e77765c2 --- /dev/null +++ b/src/OpenSHC/Map/Units/TribesState/clearTribe.cpp @@ -0,0 +1,20 @@ +#include "../TribesState.func.hpp" + +#include "OpenSHC/IO/LowLevelMemory.func.hpp" + +#include "OpenSHC/Globals/DAT_LowLevelMemory.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + // FUNCTION: STRONGHOLDCRUSADER 0x00522BC0 + void TribesState::clearTribe(int param_1) + { + MACRO_CALL_MEMBER(OpenSHC::IO::LowLevelMemory_Func::fillMemory_ByteValue, DAT_LowLevelMemory::ptr)( + 820, 0, &this->tribes[param_1]); + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/TribesState/constructTribesState.cpp b/src/OpenSHC/Map/Units/TribesState/constructTribesState.cpp new file mode 100644 index 000000000..9744c66db --- /dev/null +++ b/src/OpenSHC/Map/Units/TribesState/constructTribesState.cpp @@ -0,0 +1,28 @@ +#include "../TribesState.func.hpp" + +#include "OpenSHC/Map/Units/TribesState.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + using OpenSHC::Map::Units::TribesState; + + /* + decompilerscript: committed: 2025-01-30 21:57:43.216000 + */ + + // FUNCTION: STRONGHOLDCRUSADER 0x00521180 + TribesState* TribesState::Constructor_TribesState() + + { + this->constructorTime = timeGetTime(); + this->clans = 0; + this->fcn_mtribe = 0; + this->field2_0x8 = 1; + return this; + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/TribesState/giveUnitSelectionMoveInstructionNoMatchedSpeed.cpp b/src/OpenSHC/Map/Units/TribesState/giveUnitSelectionMoveInstructionNoMatchedSpeed.cpp new file mode 100644 index 000000000..7d9cb9f9f --- /dev/null +++ b/src/OpenSHC/Map/Units/TribesState/giveUnitSelectionMoveInstructionNoMatchedSpeed.cpp @@ -0,0 +1,21 @@ +#include "../TribesState.func.hpp" + +#include "OpenSHC/Map/Units/Instructions/UnitMatchSpeedEnum.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + using OpenSHC::Map::Units::Instructions::UnitMatchSpeedEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x004B7700 + void TribesState::giveUnitSelectionMoveInstructionNoMatchedSpeed( + int tribeID, uint x, uint y, int rallyBool, int doRally) + { + MACRO_CALL_MEMBER(OpenSHC::Map::Units::TribesState_Func::giveTribeMoveInstruction, this)( + tribeID, x, y, rallyBool, doRally, Units::Instructions::UMSE_0); + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/TribesState/markTribeAsAnimalTribe.cpp b/src/OpenSHC/Map/Units/TribesState/markTribeAsAnimalTribe.cpp new file mode 100644 index 000000000..a2b2f16bf --- /dev/null +++ b/src/OpenSHC/Map/Units/TribesState/markTribeAsAnimalTribe.cpp @@ -0,0 +1,12 @@ +#include "../TribesState.func.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + // FUNCTION: STRONGHOLDCRUSADER 0x00523730 + void TribesState::markTribeAsAnimalTribe(int param_1) { this->tribes[param_1].unkIsAnimalTribe = 1; } + + } +} +} diff --git a/src/OpenSHC/Map/Units/TribesState/playArcherCommandSpeech.cpp b/src/OpenSHC/Map/Units/TribesState/playArcherCommandSpeech.cpp new file mode 100644 index 000000000..cfe4c6794 --- /dev/null +++ b/src/OpenSHC/Map/Units/TribesState/playArcherCommandSpeech.cpp @@ -0,0 +1,25 @@ +#include "../TribesState.func.hpp" + +#include "OpenSHC/Audio/SFX/SFXState.func.hpp" +#include "OpenSHC/Map/Units/UnitType.hpp" + +#include "OpenSHC/Globals/DAT_SFXState.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + using OpenSHC::Map::Units::UnitType; + + // FUNCTION: STRONGHOLDCRUSADER 0x00525090 + void TribesState::playArcherCommandSpeech(int selectionID) + { + MACRO_CALL_MEMBER(OpenSHC::Audio::SFX::SFXState_Func::playUnitSpeech, DAT_SFXState::ptr)( + MACRO_CALL_MEMBER(OpenSHC::Map::Units::TribesState_Func::getMajorityArcherTypeEuropeanOrArabian, this)( + selectionID), + 0x1f); + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/TribesState/playPatrolCommandSpeech.cpp b/src/OpenSHC/Map/Units/TribesState/playPatrolCommandSpeech.cpp new file mode 100644 index 000000000..1237f180b --- /dev/null +++ b/src/OpenSHC/Map/Units/TribesState/playPatrolCommandSpeech.cpp @@ -0,0 +1,28 @@ +#include "../TribesState.func.hpp" + +#include "OpenSHC/Audio/SFX/SFXState.func.hpp" +#include "OpenSHC/Map/Units/UnitsState.func.hpp" +#include "OpenSHC/Map/Units/UnitType.hpp" + +#include "OpenSHC/Globals/DAT_SFXState.hpp" +#include "OpenSHC/Globals/DAT_UnitsState.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + using OpenSHC::Map::Units::UnitType; + + // FUNCTION: STRONGHOLDCRUSADER 0x00522110 + void TribesState::playPatrolCommandSpeech(undefined4 param_1) + { + MACRO_CALL_MEMBER(OpenSHC::Map::Units::UnitsState_Func::selectionContainsCombatUnit, DAT_UnitsState::ptr)( + 1); + UnitType unitType = MACRO_CALL_MEMBER( + OpenSHC::Map::Units::TribesState_Func::getMajoritySelectedUnitType, this)(param_1, (int*)¶m_1); + MACRO_CALL_MEMBER(OpenSHC::Audio::SFX::SFXState_Func::playUnitSpeech, DAT_SFXState::ptr)(unitType, 0x29); + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/TribesState/playTunnelerCommandSpeech.cpp b/src/OpenSHC/Map/Units/TribesState/playTunnelerCommandSpeech.cpp new file mode 100644 index 000000000..329a08b71 --- /dev/null +++ b/src/OpenSHC/Map/Units/TribesState/playTunnelerCommandSpeech.cpp @@ -0,0 +1,23 @@ +#include "../TribesState.func.hpp" + +#include "OpenSHC/Audio/SFX/SFXState.func.hpp" +#include "OpenSHC/Map/Units/UnitType.hpp" + +#include "OpenSHC/Globals/DAT_SFXState.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + using OpenSHC::Map::Units::UnitType; + + // FUNCTION: STRONGHOLDCRUSADER 0x00522150 + void TribesState::playTunnelerCommandSpeech() + { + MACRO_CALL_MEMBER(OpenSHC::Audio::SFX::SFXState_Func::playUnitSpeech, DAT_SFXState::ptr)( + OpenSHC::Map::Units::UT_TUNNELER, 0x27); + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/TribesState/playUnitSelectSpeech.cpp b/src/OpenSHC/Map/Units/TribesState/playUnitSelectSpeech.cpp new file mode 100644 index 000000000..b8be80471 --- /dev/null +++ b/src/OpenSHC/Map/Units/TribesState/playUnitSelectSpeech.cpp @@ -0,0 +1,28 @@ +#include "../TribesState.func.hpp" + +#include "OpenSHC/Audio/SFX/SFXState.func.hpp" +#include "OpenSHC/Map/Units/UnitsState.func.hpp" +#include "OpenSHC/Map/Units/UnitType.hpp" + +#include "OpenSHC/Globals/DAT_SFXState.hpp" +#include "OpenSHC/Globals/DAT_UnitsState.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + using OpenSHC::Map::Units::UnitType; + + // FUNCTION: STRONGHOLDCRUSADER 0x00521EB0 + void TribesState::playUnitSelectSpeech(undefined4 param_1) + { + MACRO_CALL_MEMBER(OpenSHC::Map::Units::UnitsState_Func::selectionContainsCombatUnit, DAT_UnitsState::ptr)( + 1); + UnitType unitType = MACRO_CALL_MEMBER( + OpenSHC::Map::Units::TribesState_Func::getMajoritySelectedUnitType, this)(param_1, (int*)¶m_1); + MACRO_CALL_MEMBER(OpenSHC::Audio::SFX::SFXState_Func::playUnitSpeech, DAT_SFXState::ptr)(unitType, 0xb); + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/TribesState/playWorkCommandSpeech.cpp b/src/OpenSHC/Map/Units/TribesState/playWorkCommandSpeech.cpp new file mode 100644 index 000000000..4f833a0f5 --- /dev/null +++ b/src/OpenSHC/Map/Units/TribesState/playWorkCommandSpeech.cpp @@ -0,0 +1,29 @@ +#include "../TribesState.func.hpp" + +#include "OpenSHC/Audio/SFX/SFXState.func.hpp" +#include "OpenSHC/Map/Units/UnitsState.func.hpp" +#include "OpenSHC/Map/Units/UnitType.hpp" + +#include "OpenSHC/Globals/DAT_SFXState.hpp" +#include "OpenSHC/Globals/DAT_UnitsState.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + using OpenSHC::Map::Units::UnitType; + + // FUNCTION: STRONGHOLDCRUSADER 0x00522160 + void TribesState::playWorkCommandSpeech(undefined4 param_1) + { + MACRO_CALL_MEMBER(OpenSHC::Map::Units::UnitsState_Func::selectionContainsCombatUnit, DAT_UnitsState::ptr)( + 1); + MACRO_CALL_MEMBER(OpenSHC::Audio::SFX::SFXState_Func::playUnitSpeech, DAT_SFXState::ptr)( + MACRO_CALL_MEMBER(OpenSHC::Map::Units::TribesState_Func::getMajoritySelectedUnitType, this)( + param_1, (int*)¶m_1), + 0x24); + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/TribesState/popUnitFromTribe.cpp b/src/OpenSHC/Map/Units/TribesState/popUnitFromTribe.cpp new file mode 100644 index 000000000..74b446b7d --- /dev/null +++ b/src/OpenSHC/Map/Units/TribesState/popUnitFromTribe.cpp @@ -0,0 +1,20 @@ +#include "../TribesState.func.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + // FUNCTION: STRONGHOLDCRUSADER 0x00525B70 + int TribesState::popUnitFromTribe(int tribeID) + { + int _unitID + = MACRO_CALL_MEMBER(OpenSHC::Map::Units::TribesState_Func::getUnitIDForIndexInTribe, this)(tribeID, 0); + if (_unitID != 0) { + MACRO_CALL_MEMBER(OpenSHC::Map::Units::TribesState_Func::removeUnitFromTribe, this)(_unitID, tribeID); + } + return _unitID; + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/TribesState/queueUnitStance.cpp b/src/OpenSHC/Map/Units/TribesState/queueUnitStance.cpp new file mode 100644 index 000000000..686c1303a --- /dev/null +++ b/src/OpenSHC/Map/Units/TribesState/queueUnitStance.cpp @@ -0,0 +1,26 @@ +#include "../TribesState.func.hpp" + +#include "OpenSHC/Synchrony/GameSynchronyState.func.hpp" +#include "OpenSHC/Commands/GameCommandType.hpp" + +#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + using OpenSHC::Commands::GameCommandType; + + // FUNCTION: STRONGHOLDCRUSADER 0x00522BF0 + void TribesState::queueUnitStance(undefined4 stanceID, undefined4 param_2) + { + DAT_GameSynchronyState::instance.DAT_GameCommandParam0 = stanceID; + DAT_GameSynchronyState::instance.DAT_GameCommandParam1 = param_2; + + MACRO_CALL_MEMBER(OpenSHC::Synchrony::GameSynchronyState_Func::queueCommand, DAT_GameSynchronyState::ptr)( + OpenSHC::Commands::GCT_UNIT_STANCE); + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/TribesState/reassignOwnerForTribesOfBehaviorType2.cpp b/src/OpenSHC/Map/Units/TribesState/reassignOwnerForTribesOfBehaviorType2.cpp new file mode 100644 index 000000000..4b3a8c79b --- /dev/null +++ b/src/OpenSHC/Map/Units/TribesState/reassignOwnerForTribesOfBehaviorType2.cpp @@ -0,0 +1,23 @@ +#include "../TribesState.func.hpp" + +#include "OpenSHC/Globals/DAT_TribesState.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + // FUNCTION: STRONGHOLDCRUSADER 0x00521210 + void TribesState::reassignOwnerForTribesOfBehaviorType2(int param_1, int param_2) + { + for (int i = 1; i < 1250; i++) { + // DAT_TribesState::instance is required instead of this for there to be 100% match + if (DAT_TribesState::instance.tribes[i].tribeState == 2 + && DAT_TribesState::instance.tribes[i].owner == param_1) { + DAT_TribesState::instance.tribes[i].owner = param_2; + } + } + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/TribesState/setCamelSpawnXY.cpp b/src/OpenSHC/Map/Units/TribesState/setCamelSpawnXY.cpp new file mode 100644 index 000000000..441f137b4 --- /dev/null +++ b/src/OpenSHC/Map/Units/TribesState/setCamelSpawnXY.cpp @@ -0,0 +1,22 @@ +#include "../TribesState.func.hpp" + +#include "OpenSHC/Globals/DAT_GameState.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + // FUNCTION: STRONGHOLDCRUSADER 0x005233E0 + void TribesState::setCamelSpawnXY(undefined4 x, undefined4 y) + { + for (int i = 0; i < 4; i++) { + if (DAT_GameState::instance.mapAndTime.camelSpawnXY[i][0] == 0) { + DAT_GameState::instance.mapAndTime.camelSpawnXY[i][0] = x; + DAT_GameState::instance.mapAndTime.camelSpawnXY[i][1] = y; + } + } + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/TribesState/setUnitStance.cpp b/src/OpenSHC/Map/Units/TribesState/setUnitStance.cpp new file mode 100644 index 000000000..57f79965e --- /dev/null +++ b/src/OpenSHC/Map/Units/TribesState/setUnitStance.cpp @@ -0,0 +1,22 @@ +#include "../TribesState.func.hpp" + +#include "OpenSHC/Map/Units/Behavior/UnitStanceEnum.hpp" + +#include "OpenSHC/Globals/DAT_GameCore.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + using OpenSHC::Map::Units::Behavior::UnitStanceEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x00522C20 + void TribesState::setUnitStance(int tribeID, UnitStanceEnum unitStance) + { + this->tribes[tribeID].unitStance = unitStance; + DAT_GameCore::instance.countdown = 1; + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/TribesState/setWhetherTribeContainsAnyUnits.cpp b/src/OpenSHC/Map/Units/TribesState/setWhetherTribeContainsAnyUnits.cpp new file mode 100644 index 000000000..85b3a7ecf --- /dev/null +++ b/src/OpenSHC/Map/Units/TribesState/setWhetherTribeContainsAnyUnits.cpp @@ -0,0 +1,20 @@ +#include "../TribesState.func.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + // FUNCTION: STRONGHOLDCRUSADER 0x005224E0 + void TribesState::setWhetherTribeContainsAnyUnits(int tribeID) + { + for (int iVar1 = 0; iVar1 < 200; iVar1++) { + if (this->tribes[tribeID].unitSelectionBitMasked[iVar1] != 0) { + this->tribes[tribeID].highestID = iVar1; + return; + } + } + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/TribesState/storeDeerXAndYinMapInfo.cpp b/src/OpenSHC/Map/Units/TribesState/storeDeerXAndYinMapInfo.cpp new file mode 100644 index 000000000..12999e724 --- /dev/null +++ b/src/OpenSHC/Map/Units/TribesState/storeDeerXAndYinMapInfo.cpp @@ -0,0 +1,22 @@ +#include "../TribesState.func.hpp" + +#include "OpenSHC/Globals/DAT_GameState.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + // FUNCTION: STRONGHOLDCRUSADER 0x00523340 + void TribesState::storeDeerXAndYinMapInfo(undefined4 x, undefined4 y) + { + for (int i = 0; i < 4; i++) { + if (DAT_GameState::instance.mapAndTime.deerSpawnLocationsXY[i][0] == 0) { + DAT_GameState::instance.mapAndTime.deerSpawnLocationsXY[i][0] = x; + DAT_GameState::instance.mapAndTime.deerSpawnLocationsXY[i][1] = y; + } + } + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/TribesState/storeLionXAndYInMapInfo.cpp b/src/OpenSHC/Map/Units/TribesState/storeLionXAndYInMapInfo.cpp new file mode 100644 index 000000000..2ec59fd4f --- /dev/null +++ b/src/OpenSHC/Map/Units/TribesState/storeLionXAndYInMapInfo.cpp @@ -0,0 +1,26 @@ +#include "../TribesState.func.hpp" + +#include "OpenSHC/Map/Location/Point4ShortXY.hpp" + +#include "OpenSHC/Globals/DAT_GameState.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + using OpenSHC::Map::Location::Point4ShortXY; + + // FUNCTION: STRONGHOLDCRUSADER 0x00523370 + void TribesState::storeLionXAndYInMapInfo(undefined4 x, undefined4 y) + { + for (int i = 0; i < 4; i++) { + if (DAT_GameState::instance.mapAndTime.lionLocationsXY[i].x == 0) { + DAT_GameState::instance.mapAndTime.lionLocationsXY[i].x = x; + DAT_GameState::instance.mapAndTime.lionLocationsXY[i].y = y; + } + } + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/TribesState/tribeCorrespondsWithUID.cpp b/src/OpenSHC/Map/Units/TribesState/tribeCorrespondsWithUID.cpp new file mode 100644 index 000000000..d795e9529 --- /dev/null +++ b/src/OpenSHC/Map/Units/TribesState/tribeCorrespondsWithUID.cpp @@ -0,0 +1,18 @@ +#include "../TribesState.func.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + // FUNCTION: STRONGHOLDCRUSADER 0x00522360 + uint TribesState::tribeCorrespondsWithUID(int tribeID, uint tribeUID) + { + if (tribeUID == 0) { + return 0; + } + return this->tribes[tribeID].uid == tribeUID; + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/TribesState/upgradeMapTribesState.cpp b/src/OpenSHC/Map/Units/TribesState/upgradeMapTribesState.cpp new file mode 100644 index 000000000..298a12145 --- /dev/null +++ b/src/OpenSHC/Map/Units/TribesState/upgradeMapTribesState.cpp @@ -0,0 +1,25 @@ +#include "../TribesState.func.hpp" + +#include "OpenSHC/Map/Version.func.hpp" +#include "OpenSHC/IO/PackagedFileMagicNum.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + using OpenSHC::IO::PackagedFileMagicNum; + + // FUNCTION: STRONGHOLDCRUSADER 0x00526370 + void TribesState::upgradeMapTribesState( + PackagedFileMagicNum receivedMapVersion, PackagedFileMagicNum packagerMapVersion) + { + MACRO_CALL(OpenSHC::Map::Version_Func::UpgradeMapTribesStateVersionTo_Unknown1)(); + MACRO_CALL(OpenSHC::Map::Version_Func::UpgradeMapTribesStateVersionTo_Unknown2)(); + if ((receivedMapVersion != packagerMapVersion) && ((int)receivedMapVersion < 0x8e)) { + MACRO_CALL(OpenSHC::Map::Version_Func::UpgradeMapTribesStateVersionTo_142)(); + } + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/TroopValueState/attackInfoHasArch2Building.cpp b/src/OpenSHC/Map/Units/TroopValueState/attackInfoHasArch2Building.cpp new file mode 100644 index 000000000..36f3a0536 --- /dev/null +++ b/src/OpenSHC/Map/Units/TroopValueState/attackInfoHasArch2Building.cpp @@ -0,0 +1,23 @@ +#include "OpenSHC/Map/Units/TroopValueState.func.hpp" + +#include "OpenSHC/Globals/DAT_TroopValueState.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + // FUNCTION: STRONGHOLDCRUSADER 0x0051ACB0 + undefined4 TroopValueState::attackInfoHasArch2Building(int buildingID) + { + for (int i = 0; i < 1000; i++) { + // fixme: this function doesn't use this-> (would be not 100% matching!) + if (buildingID == DAT_TroopValueState::instance.attackInfo.arch2ValuesArray[i].buildingID) { + return TRUE; + } + } + return FALSE; + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/TroopValueState/attackInfoHasHigh2Building.cpp b/src/OpenSHC/Map/Units/TroopValueState/attackInfoHasHigh2Building.cpp new file mode 100644 index 000000000..20b5eb7b9 --- /dev/null +++ b/src/OpenSHC/Map/Units/TroopValueState/attackInfoHasHigh2Building.cpp @@ -0,0 +1,28 @@ +#include "OpenSHC/Map/Units/TroopValueState.func.hpp" +#include "OpenSHC/Map/AttackInfoSubArrayElement1.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +#include "OpenSHC/Globals/DAT_TroopValueState.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + using OpenSHC::Map::AttackInfoSubArrayElement1; + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x0051AC80 + BOOLEnum TroopValueState::attackInfoHasHigh2Building(int buildingID) + { + for (int i = 0; i < 1000; i++) { + // fixme: this function doesn't use this-> (would be not 100% matching!) + if (buildingID == DAT_TroopValueState::instance.attackInfo.high2ValuesArray[i].buildingID) { + return TRUE; + } + } + return FALSE; + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/TroopValueState/clearAIInfoLayerOutsideStartZone.cpp b/src/OpenSHC/Map/Units/TroopValueState/clearAIInfoLayerOutsideStartZone.cpp new file mode 100644 index 000000000..ae97ac88b --- /dev/null +++ b/src/OpenSHC/Map/Units/TroopValueState/clearAIInfoLayerOutsideStartZone.cpp @@ -0,0 +1,25 @@ +#include "OpenSHC/Map/Units/TroopValueState.func.hpp" + +#include "OpenSHC/Globals/DAT_TileMapState.hpp" +#include "OpenSHC/Globals/DAT_TroopValueState.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + // FUNCTION: STRONGHOLDCRUSADER 0x0051B680 + void TroopValueState::clearAIInfoLayerOutsideStartZone() + { + // fixme: this function doesn't use this-> (would be not 100% matching!) + int area = DAT_TroopValueState::instance.attackInfo.startCon; + for (int iVar2 = 0; iVar2 < 80400; iVar2++) { + if ((DAT_TileMapState::instance.AIInfoLayer[iVar2] != '\0') + && ((short)DAT_TileMapState::instance.PathConnectionLayer[iVar2] != area)) { + DAT_TileMapState::instance.AIInfoLayer[iVar2] = '\0'; + } + } + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/TroopValueState/constructTroopValueState.cpp b/src/OpenSHC/Map/Units/TroopValueState/constructTroopValueState.cpp new file mode 100644 index 000000000..acfc2761c --- /dev/null +++ b/src/OpenSHC/Map/Units/TroopValueState/constructTroopValueState.cpp @@ -0,0 +1,18 @@ +#include "OpenSHC/Map/Units/TroopValueState.func.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + using OpenSHC::Map::Units::TroopValueState; + + // FUNCTION: STRONGHOLDCRUSADER 0x0051D680 + TroopValueState* TroopValueState::constructTroopValueState() + { + MACRO_CALL_MEMBER(OpenSHC::Map::Units::TroopValueState_Func::clearAttackInfo, this)(); + return this; + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/TroopValueState/getTileInTargetedBuildingTiles.cpp b/src/OpenSHC/Map/Units/TroopValueState/getTileInTargetedBuildingTiles.cpp new file mode 100644 index 000000000..1a80ac4f5 --- /dev/null +++ b/src/OpenSHC/Map/Units/TroopValueState/getTileInTargetedBuildingTiles.cpp @@ -0,0 +1,27 @@ +#include "OpenSHC/Map/Units/TroopValueState.func.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +#include "OpenSHC/Globals/DAT_TroopValueState.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x00519960 + BOOLEnum TroopValueState::getTileInTargetedBuildingTiles(int tile) + { + // fixme: this function doesn't use this-> (would be not 100% matching!) + for (int _index = 0; _index < DAT_TroopValueState::instance.attackInfo.targetedBuildingTilesArraySize; + _index++) { + if (DAT_TroopValueState::instance.attackInfo.targetedBuildingTilesArray[_index] == tile) { + return TRUE; + } + } + return FALSE; + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/TroopValueState/isAttackWaveComplete.cpp b/src/OpenSHC/Map/Units/TroopValueState/isAttackWaveComplete.cpp new file mode 100644 index 000000000..e9e02cebc --- /dev/null +++ b/src/OpenSHC/Map/Units/TroopValueState/isAttackWaveComplete.cpp @@ -0,0 +1,24 @@ +#include "OpenSHC/Map/Units/TroopValueState.func.hpp" + +#include "OpenSHC/Globals/DAT_TroopValueState.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + // FUNCTION: STRONGHOLDCRUSADER 0x00518350 + undefined4 TroopValueState::isAttackWaveComplete() + { + for (int i = 0; i < 50; i++) { + // fixme: this function doesn't use this-> (would be not 100% matching!) + if ((DAT_TroopValueState::instance.attackInfo.nof_tribes[i] != 0 + && (DAT_TroopValueState::instance.attackInfo.value3Array01[i] != 6))) { + return FALSE; + } + } + return TRUE; + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/UnitsState/ComputeDamageFearFactorBonus.cpp b/src/OpenSHC/Map/Units/UnitsState/ComputeDamageFearFactorBonus.cpp new file mode 100644 index 000000000..8ae098d58 --- /dev/null +++ b/src/OpenSHC/Map/Units/UnitsState/ComputeDamageFearFactorBonus.cpp @@ -0,0 +1,17 @@ +#include "../UnitsState.func.hpp" + +#include "OpenSHC/Globals/DAT_GameState.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + // FUNCTION: STRONGHOLDCRUSADER 0x005311F0 + int UnitsState::computeDamageFearFactorBonus(int damage, int playerID) + { + return ((DAT_GameState::instance.playerDataArray[playerID].fearFactorLevel + 20) * damage * 5) / 100; + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/UnitsState/Constructor_UnitsState.cpp b/src/OpenSHC/Map/Units/UnitsState/Constructor_UnitsState.cpp new file mode 100644 index 000000000..a9e30900b --- /dev/null +++ b/src/OpenSHC/Map/Units/UnitsState/Constructor_UnitsState.cpp @@ -0,0 +1,25 @@ +#include "../UnitsState.func.hpp" + +#include "OpenSHC/Map/Units/UnitsState.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + using OpenSHC::Map::Units::UnitsState; + + // FUNCTION: STRONGHOLDCRUSADER 0x0053B8B0 + UnitsState* UnitsState::Constructor_UnitsState() + { + this->creationTime = timeGetTime(); + MACRO_CALL_MEMBER(OpenSHC::Map::Units::UnitsState_Func::clearAllUnits, this)(); + this->lastSelectedUnitID = 0; + this->unknownInitially0_01 = 0; + this->lostChimps = 0; + this->maxUnitCount = 2500; + return this; + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/UnitsState/changeDestinationByLeftover.cpp b/src/OpenSHC/Map/Units/UnitsState/changeDestinationByLeftover.cpp new file mode 100644 index 000000000..9e893060c --- /dev/null +++ b/src/OpenSHC/Map/Units/UnitsState/changeDestinationByLeftover.cpp @@ -0,0 +1,19 @@ +#include "../UnitsState.func.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + // FUNCTION: STRONGHOLDCRUSADER 0x00533C70 + void UnitsState::changeDestinationByLeftover(int unitID) + { + short _leftover = this->units[unitID].leftover; + if (0 < _leftover) { + MACRO_CALL_MEMBER(OpenSHC::Map::Units::UnitsState_Func::changeDestinationByAmount, this)( + unitID, _leftover); + } + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/UnitsState/checkIfCitizenUnitIsAliveBasedOnState.cpp b/src/OpenSHC/Map/Units/UnitsState/checkIfCitizenUnitIsAliveBasedOnState.cpp new file mode 100644 index 000000000..6b387660c --- /dev/null +++ b/src/OpenSHC/Map/Units/UnitsState/checkIfCitizenUnitIsAliveBasedOnState.cpp @@ -0,0 +1,31 @@ +#include "../UnitsState.func.hpp" + +#include "OpenSHC/Map/Units/States/UnitStateShort.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + using OpenSHC::Map::Units::States::UnitState; + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x00530FD0 + BOOLEnum UnitsState::checkIfCitizenUnitIsAliveBasedOnState(int param_1) + { + short _state = (unsigned short)this->units[param_1].state.generic; + if ((0x6f <= _state)) { + if (_state <= 0x74) { + return TRUE; + } else { + return FALSE; + } + + } else { + return FALSE; + } + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/UnitsState/checkUnitHasPropertyBasedOnUnitType.cpp b/src/OpenSHC/Map/Units/UnitsState/checkUnitHasPropertyBasedOnUnitType.cpp new file mode 100644 index 000000000..fdad9cc5e --- /dev/null +++ b/src/OpenSHC/Map/Units/UnitsState/checkUnitHasPropertyBasedOnUnitType.cpp @@ -0,0 +1,18 @@ +#include "../UnitsState.func.hpp" + +#include "OpenSHC/Globals/DAT_UnitPropertiesDefinedData.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + // FUNCTION: STRONGHOLDCRUSADER 0x0052F0A0 + int UnitsState::checkUnitHasPropertyBasedOnUnitType(int unitID, int property) + { + return DAT_UnitPropertiesDefinedData::instance + .UnitClimbStateFlags[property][(short)this->units[unitID].unitType]; + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/UnitsState/clearHiddenFlagAndUpdatePosition.cpp b/src/OpenSHC/Map/Units/UnitsState/clearHiddenFlagAndUpdatePosition.cpp new file mode 100644 index 000000000..14cd01859 --- /dev/null +++ b/src/OpenSHC/Map/Units/UnitsState/clearHiddenFlagAndUpdatePosition.cpp @@ -0,0 +1,18 @@ +#include "../UnitsState.func.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + // FUNCTION: STRONGHOLDCRUSADER 0x0053E8D0 + void UnitsState::clearHiddenFlagAndUpdatePosition(int unitID) + { + if (this->units[unitID].unknownTestAgainst0_2 != 0) { + this->units[unitID].unknownTestAgainst0_2 = 0; + MACRO_CALL_MEMBER(OpenSHC::Map::Units::UnitsState_Func::commitPendingUnitPosition, this)(unitID); + } + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/UnitsState/deselectUnit.cpp b/src/OpenSHC/Map/Units/UnitsState/deselectUnit.cpp new file mode 100644 index 000000000..1ee997531 --- /dev/null +++ b/src/OpenSHC/Map/Units/UnitsState/deselectUnit.cpp @@ -0,0 +1,18 @@ +#include "../UnitsState.func.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + // FUNCTION: STRONGHOLDCRUSADER 0x00535190 + void UnitsState::deselectUnit(int unitID) + { + if (this->units[unitID].isSelected != 0) { + this->units[unitID].isSelected = 0; + this->totalUnitsInSelection -= 1; + } + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/UnitsState/extendRallyPoint.cpp b/src/OpenSHC/Map/Units/UnitsState/extendRallyPoint.cpp new file mode 100644 index 000000000..dc5242d8a --- /dev/null +++ b/src/OpenSHC/Map/Units/UnitsState/extendRallyPoint.cpp @@ -0,0 +1,27 @@ +#include "../UnitsState.func.hpp" + +#include "OpenSHC/Synchrony/GameSynchronyState.func.hpp" +#include "OpenSHC/Commands/GameCommandType.hpp" + +#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + using OpenSHC::Commands::GameCommandType; + + // FUNCTION: STRONGHOLDCRUSADER 0x005370C0 + void UnitsState::extendRallyPoint(int tribeID, int mouseX, int mouseY, int rallyCount) + { + DAT_GameSynchronyState::instance.DAT_GameCommandParam0 = tribeID; + DAT_GameSynchronyState::instance.DAT_GameCommandParam1 = mouseX; + DAT_GameSynchronyState::instance.DAT_GameCommandParam2 = mouseY; + DAT_GameSynchronyState::instance.DAT_GameCommandParam3 = rallyCount; + MACRO_CALL_MEMBER(OpenSHC::Synchrony::GameSynchronyState_Func::queueCommand, DAT_GameSynchronyState::ptr)( + OpenSHC::Commands::GCT_UNIT_EXTEND_RALLY_POINT); + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/UnitsState/getArmySize.cpp b/src/OpenSHC/Map/Units/UnitsState/getArmySize.cpp new file mode 100644 index 000000000..0c11f2a78 --- /dev/null +++ b/src/OpenSHC/Map/Units/UnitsState/getArmySize.cpp @@ -0,0 +1,17 @@ +#include "../UnitsState.func.hpp" + +#include "OpenSHC/Globals/DAT_GameState.hpp" + +namespace OpenSHC { + +namespace Map { + + namespace Units { + + // FUNCTION: STRONGHOLDCRUSADER 0x00532f60 + int UnitsState::getArmySize(int playerID) { return DAT_GameState::ptr->playerDataArray[playerID].armySize; } + } + +} + +} diff --git a/src/OpenSHC/Map/Units/UnitsState/getDestination2EqualsGivenCoordinates.cpp b/src/OpenSHC/Map/Units/UnitsState/getDestination2EqualsGivenCoordinates.cpp new file mode 100644 index 000000000..41f9370d7 --- /dev/null +++ b/src/OpenSHC/Map/Units/UnitsState/getDestination2EqualsGivenCoordinates.cpp @@ -0,0 +1,22 @@ +#include "../UnitsState.func.hpp" + +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x00533920 + BOOLEnum UnitsState::getDestination2EqualsGivenCoordinates(int unitID, int x, int y) + { + if (this->units[unitID].destinationX_2Unk != x) { + return TRUE; + } + return this->units[unitID].destinationY_2Unk != y; + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/UnitsState/getFirstSelectedUnitID.cpp b/src/OpenSHC/Map/Units/UnitsState/getFirstSelectedUnitID.cpp new file mode 100644 index 000000000..2c2459a7c --- /dev/null +++ b/src/OpenSHC/Map/Units/UnitsState/getFirstSelectedUnitID.cpp @@ -0,0 +1,26 @@ +#include "../UnitsState.func.hpp" + +#include "OpenSHC/Synchrony/GameSynchronyState.func.hpp" +#include "OpenSHC/Commands/GameCommandType.hpp" + +#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" +#include "OpenSHC/Globals/DAT_TribesState.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + using OpenSHC::Commands::GameCommandType; + + // FUNCTION: STRONGHOLDCRUSADER 0x00535DF0 + void UnitsState::getFirstSelectedUnitID(undefined4 param_1) + { + DAT_GameSynchronyState::instance.DAT_GameCommandParam0 = param_1; + DAT_GameSynchronyState::instance.DAT_GameCommandParam1 = DAT_TribesState::instance.DAT_CurrentTribeID; + MACRO_CALL_MEMBER(OpenSHC::Synchrony::GameSynchronyState_Func::queueCommand, DAT_GameSynchronyState::ptr)( + ((GameCommandType)0x48)); + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/UnitsState/hasTunnelerNotFinishedDigging.cpp b/src/OpenSHC/Map/Units/UnitsState/hasTunnelerNotFinishedDigging.cpp new file mode 100644 index 000000000..da188c72f --- /dev/null +++ b/src/OpenSHC/Map/Units/UnitsState/hasTunnelerNotFinishedDigging.cpp @@ -0,0 +1,19 @@ +#include "../UnitsState.func.hpp" + +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x005339F0 + BOOLEnum UnitsState::hasTunnelerNotFinishedDigging(int param_1) + { + return this->units[param_1].tunnelerFinishedDigging == 0; + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/UnitsState/isComputerManagedNonPeasant.cpp b/src/OpenSHC/Map/Units/UnitsState/isComputerManagedNonPeasant.cpp new file mode 100644 index 000000000..6e5492354 --- /dev/null +++ b/src/OpenSHC/Map/Units/UnitsState/isComputerManagedNonPeasant.cpp @@ -0,0 +1,30 @@ +#include "../UnitsState.func.hpp" + +#include "OpenSHC/Map/Units/UnitType.hpp" +#include "OpenSHC/Map/Units/UnitTypeShort.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +#include "OpenSHC/Globals/DAT_UnitPropertiesDefinedData.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + using OpenSHC::Map::Units::UnitType; + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x00530080 + BOOLEnum UnitsState::isComputerManagedNonPeasant(int param_1) + { + // fixme: UnitType is loaded as an unsigned short in this function (movzx), but cast to a signed version on + // the stack for use later. + short UVar1 = (unsigned short)this->units[param_1].unitType; + if (UVar1 == OpenSHC::Map::Units::UT_PEASANT) { + return FALSE; + } + return DAT_UnitPropertiesDefinedData::instance.COMPUTER_MANAGED[UVar1] != 0; + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/UnitsState/makeUnitStopWalkingByClearingPathProgressState.cpp b/src/OpenSHC/Map/Units/UnitsState/makeUnitStopWalkingByClearingPathProgressState.cpp new file mode 100644 index 000000000..13ceb1747 --- /dev/null +++ b/src/OpenSHC/Map/Units/UnitsState/makeUnitStopWalkingByClearingPathProgressState.cpp @@ -0,0 +1,18 @@ +#include "../UnitsState.func.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + // FUNCTION: STRONGHOLDCRUSADER 0x0052F070 + void UnitsState::makeUnitStopWalkingByClearingPathProgressState(int unitID) + { + this->units[unitID].currentIndexInPathPlan = 0; + this->units[unitID].totalSizeOfPathPlan = 0; + this->units[unitID].unknownMovementRelated_0x2d2 = 0; + this->units[unitID].climbDataID = 0; + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/UnitsState/queueClickNavigateMenuOrEscape.cpp b/src/OpenSHC/Map/Units/UnitsState/queueClickNavigateMenuOrEscape.cpp new file mode 100644 index 000000000..84fe50702 --- /dev/null +++ b/src/OpenSHC/Map/Units/UnitsState/queueClickNavigateMenuOrEscape.cpp @@ -0,0 +1,25 @@ +#include "../UnitsState.func.hpp" + +#include "OpenSHC/Synchrony/GameSynchronyState.func.hpp" +#include "OpenSHC/Commands/GameCommandType.hpp" + +#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + using OpenSHC::Commands::GameCommandType; + + // FUNCTION: STRONGHOLDCRUSADER 0x00536CC0 + void UnitsState::queueClickNavigateMenuOrEscape(undefined4 param_1) + { + DAT_GameSynchronyState::instance.DAT_GameCommandParam0 = -1; + DAT_GameSynchronyState::instance.DAT_GameCommandParam1 = param_1; + MACRO_CALL_MEMBER(OpenSHC::Synchrony::GameSynchronyState_Func::queueCommand, DAT_GameSynchronyState::ptr)( + OpenSHC::Commands::GCT_ESCAPE); + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/UnitsState/queueDisbandAndAttackCommand2Params.cpp b/src/OpenSHC/Map/Units/UnitsState/queueDisbandAndAttackCommand2Params.cpp new file mode 100644 index 000000000..3784a584d --- /dev/null +++ b/src/OpenSHC/Map/Units/UnitsState/queueDisbandAndAttackCommand2Params.cpp @@ -0,0 +1,25 @@ +#include "../UnitsState.func.hpp" + +#include "OpenSHC/Synchrony/GameSynchronyState.func.hpp" +#include "OpenSHC/Commands/GameCommandType.hpp" + +#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + using OpenSHC::Commands::GameCommandType; + + // FUNCTION: STRONGHOLDCRUSADER 0x00537100 + void UnitsState::queueDisbandAndAttackCommand2Params(undefined4 param_1, undefined4 param_2) + { + DAT_GameSynchronyState::instance.DAT_GameCommandParam0 = param_1; + DAT_GameSynchronyState::instance.DAT_GameCommandParam1 = param_2; + MACRO_CALL_MEMBER(OpenSHC::Synchrony::GameSynchronyState_Func::queueCommand, DAT_GameSynchronyState::ptr)( + OpenSHC::Commands::GCT_DISBAND_AND_ATTACK_UNITS); + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/UnitsState/queueDisbandAndAttackCommand3Params.cpp b/src/OpenSHC/Map/Units/UnitsState/queueDisbandAndAttackCommand3Params.cpp new file mode 100644 index 000000000..c650ba8ec --- /dev/null +++ b/src/OpenSHC/Map/Units/UnitsState/queueDisbandAndAttackCommand3Params.cpp @@ -0,0 +1,26 @@ +#include "../UnitsState.func.hpp" + +#include "OpenSHC/Synchrony/GameSynchronyState.func.hpp" +#include "OpenSHC/Commands/GameCommandType.hpp" + +#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + using OpenSHC::Commands::GameCommandType; + + // FUNCTION: STRONGHOLDCRUSADER 0x00537130 + void UnitsState::queueDisbandAndAttackCommand3Params(undefined4 param_1, undefined4 param_2, undefined4 param_3) + { + DAT_GameSynchronyState::instance.DAT_GameCommandParam0 = param_1; + DAT_GameSynchronyState::instance.DAT_GameCommandParam1 = param_2; + DAT_GameSynchronyState::instance.DAT_GameCommandParam2 = param_3; + MACRO_CALL_MEMBER(OpenSHC::Synchrony::GameSynchronyState_Func::queueCommand, DAT_GameSynchronyState::ptr)( + OpenSHC::Commands::GCT_DISBAND_AND_ATTACK_UNITS); + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/UnitsState/queueDisbandAndAttackCommand4Params.cpp b/src/OpenSHC/Map/Units/UnitsState/queueDisbandAndAttackCommand4Params.cpp new file mode 100644 index 000000000..5588cd672 --- /dev/null +++ b/src/OpenSHC/Map/Units/UnitsState/queueDisbandAndAttackCommand4Params.cpp @@ -0,0 +1,28 @@ +#include "../UnitsState.func.hpp" + +#include "OpenSHC/Synchrony/GameSynchronyState.func.hpp" +#include "OpenSHC/Commands/GameCommandType.hpp" + +#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + using OpenSHC::Commands::GameCommandType; + + // FUNCTION: STRONGHOLDCRUSADER 0x00537160 + void UnitsState::queueDisbandAndAttackCommand4Params( + undefined4 param_1, undefined4 param_2, undefined4 param_3, undefined4 param_4) + { + DAT_GameSynchronyState::instance.DAT_GameCommandParam0 = param_1; + DAT_GameSynchronyState::instance.DAT_GameCommandParam1 = param_2; + DAT_GameSynchronyState::instance.DAT_GameCommandParam2 = param_3; + DAT_GameSynchronyState::instance.DAT_GameCommandParam3 = param_4; + MACRO_CALL_MEMBER(OpenSHC::Synchrony::GameSynchronyState_Func::queueCommand, DAT_GameSynchronyState::ptr)( + OpenSHC::Commands::GCT_DISBAND_AND_ATTACK_UNITS); + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/UnitsState/queueUnitTypeCommand.cpp b/src/OpenSHC/Map/Units/UnitsState/queueUnitTypeCommand.cpp new file mode 100644 index 000000000..e0a68b527 --- /dev/null +++ b/src/OpenSHC/Map/Units/UnitsState/queueUnitTypeCommand.cpp @@ -0,0 +1,25 @@ +#include "../UnitsState.func.hpp" + +#include "OpenSHC/Synchrony/GameSynchronyState.func.hpp" +#include "OpenSHC/Commands/GameCommandType.hpp" + +#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + using OpenSHC::Commands::GameCommandType; + + // FUNCTION: STRONGHOLDCRUSADER 0x00536C90 + void UnitsState::queueUnitTypeCommand(undefined4 unitType) + { + DAT_GameSynchronyState::instance.DAT_GameCommandParam0 = -1; + DAT_GameSynchronyState::instance.DAT_GameCommandParam1 = unitType; + MACRO_CALL_MEMBER(OpenSHC::Synchrony::GameSynchronyState_Func::queueCommand, DAT_GameSynchronyState::ptr)( + OpenSHC::Commands::GCT_ESCAPE); + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/UnitsState/relayTribeInstruction.cpp b/src/OpenSHC/Map/Units/UnitsState/relayTribeInstruction.cpp new file mode 100644 index 000000000..13ff54760 --- /dev/null +++ b/src/OpenSHC/Map/Units/UnitsState/relayTribeInstruction.cpp @@ -0,0 +1,23 @@ +#include "../UnitsState.func.hpp" + +#include "OpenSHC/Map/Units/TribesState.func.hpp" +#include "OpenSHC/Map/Units/UnitInstructionType.hpp" + +#include "OpenSHC/Globals/DAT_TribesState.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + using OpenSHC::Map::Units::UnitInstructionType; + + // FUNCTION: STRONGHOLDCRUSADER 0x005371E0 + void UnitsState::relayTribeInstruction( + int tribeID, UnitInstructionType instructionType, int targetID_1, int targetID_2, int param_5) + { + MACRO_CALL_MEMBER(OpenSHC::Map::Units::TribesState_Func::giveTribeAnInstruction, DAT_TribesState::ptr)( + tribeID, instructionType, targetID_1, targetID_2, param_5); + } + } +} +} diff --git a/src/OpenSHC/Map/Units/UnitsState/returnFalseStub.cpp b/src/OpenSHC/Map/Units/UnitsState/returnFalseStub.cpp new file mode 100644 index 000000000..fdde7765a --- /dev/null +++ b/src/OpenSHC/Map/Units/UnitsState/returnFalseStub.cpp @@ -0,0 +1,16 @@ +#include "../UnitsState.func.hpp" + +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x00533090 + BOOLEnum UnitsState::returnFalseStub() { return FALSE; } + + } +} +} diff --git a/src/OpenSHC/Map/Units/UnitsState/saveUnitStateBeforeInterruption.cpp b/src/OpenSHC/Map/Units/UnitsState/saveUnitStateBeforeInterruption.cpp new file mode 100644 index 000000000..d8b019de5 --- /dev/null +++ b/src/OpenSHC/Map/Units/UnitsState/saveUnitStateBeforeInterruption.cpp @@ -0,0 +1,18 @@ +#include "../UnitsState.func.hpp" + +#include "OpenSHC/Map/Units/States/UnitStateUnion.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + // FUNCTION: STRONGHOLDCRUSADER 0x00533F90 + void UnitsState::saveUnitStateBeforeInterruption(int param_1) + { + this->units[param_1].tunnelerFinishedDigging = 5; + this->units[param_1].state_3 = this->units[param_1].state; + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/UnitsState/selectionContainsEngineersOnly.cpp b/src/OpenSHC/Map/Units/UnitsState/selectionContainsEngineersOnly.cpp new file mode 100644 index 000000000..6ea0e23be --- /dev/null +++ b/src/OpenSHC/Map/Units/UnitsState/selectionContainsEngineersOnly.cpp @@ -0,0 +1,33 @@ +#include "../UnitsState.func.hpp" + +#include "OpenSHC/Map/Units/UnitsState.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + using OpenSHC::Map::Units::UnitsState; + + // FUNCTION: STRONGHOLDCRUSADER 0x00535520 + int UnitsState::selectionContainsEngineersOnly() + { + int result = FALSE; + // I tried simplifying this with an early-return but didn't work + if (this->selectionEngineers != 0) { + // This really is field pointer increment style. I tried a for loop over the fields as a int[] + // but that didn't work + int* pUnitSelection = (int*)&this->selectionEuropeanArchers; + for (int index = 0; index <= 26; index++) { + if ((index != 7) && (*pUnitSelection != 0)) { + return FALSE; + } + pUnitSelection++; + } + result = TRUE; + } + return result; + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/UnitsState/selectionContainsOnlyArabAssassins.cpp b/src/OpenSHC/Map/Units/UnitsState/selectionContainsOnlyArabAssassins.cpp new file mode 100644 index 000000000..90ac84543 --- /dev/null +++ b/src/OpenSHC/Map/Units/UnitsState/selectionContainsOnlyArabAssassins.cpp @@ -0,0 +1,33 @@ +#include "../UnitsState.func.hpp" + +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x00535810 + BOOLEnum UnitsState::selectionContainsOnlyArabAssassins() + { + BOOLEnum result = FALSE; + // I tried simplifying this with an early-return but didn't work + if (this->selectionArabAssassin != 0) { + // This really is field pointer increment style. I tried a for loop over the fields as a int[] + // but that didn't work + int* pUnitSelection = (int*)&this->selectionEuropeanArchers; + for (int index = 0; index <= 26; index++) { + if ((index != 22) && (*pUnitSelection != 0)) { + return FALSE; + } + pUnitSelection++; + } + result = TRUE; + } + return result; + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/UnitsState/selectionContainsShieldmenOnly.cpp b/src/OpenSHC/Map/Units/UnitsState/selectionContainsShieldmenOnly.cpp new file mode 100644 index 000000000..822835f25 --- /dev/null +++ b/src/OpenSHC/Map/Units/UnitsState/selectionContainsShieldmenOnly.cpp @@ -0,0 +1,29 @@ +#include "../UnitsState.func.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + // FUNCTION: STRONGHOLDCRUSADER 0x00535840 + int UnitsState::selectionContainsShieldmenOnly() + { + int result = FALSE; + // I tried simplifying this with an early-return but didn't work + if (this->selectionShield != 0) { + // This really is field pointer increment style. I tried a for loop over the fields as a int[] + // but that didn't work + int* pUnitSelection = (int*)&this->selectionEuropeanArchers; + for (int index = 0; index <= 26; index++) { + if ((index != 15) && (*pUnitSelection != 0)) { + return FALSE; + } + pUnitSelection++; + } + result = TRUE; + } + return result; + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/UnitsState/selectionContainsTunnelersOnly.cpp b/src/OpenSHC/Map/Units/UnitsState/selectionContainsTunnelersOnly.cpp new file mode 100644 index 000000000..95f8d48ea --- /dev/null +++ b/src/OpenSHC/Map/Units/UnitsState/selectionContainsTunnelersOnly.cpp @@ -0,0 +1,29 @@ +#include "../UnitsState.func.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + // FUNCTION: STRONGHOLDCRUSADER 0x00535700 + int UnitsState::selectionContainsTunnelersOnly() + { + int result = FALSE; + // I tried simplifying this with an early-return but didn't work + if (this->selectionTunnelers != 0) { + // This really is field pointer increment style. I tried a for loop over the fields as a int[] + // but that didn't work + int* pUnitSelection = (int*)&this->selectionEuropeanArchers; + for (int index = 0; index <= 26; index++) { + if ((index != 9) && (*pUnitSelection != 0)) { + return FALSE; + } + pUnitSelection++; + } + result = TRUE; + } + return result; + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/UnitsState/selectionHasArchers.cpp b/src/OpenSHC/Map/Units/UnitsState/selectionHasArchers.cpp new file mode 100644 index 000000000..f5fa655cf --- /dev/null +++ b/src/OpenSHC/Map/Units/UnitsState/selectionHasArchers.cpp @@ -0,0 +1,22 @@ +#include "../UnitsState.func.hpp" + +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x00535560 + BOOLEnum UnitsState::selectionHasArchers() + { + if (this->selectionEuropeanArchers != 0) { + return TRUE; + } + return this->selectionArabArcher != 0; + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/UnitsState/selectionHasEngineers.cpp b/src/OpenSHC/Map/Units/UnitsState/selectionHasEngineers.cpp new file mode 100644 index 000000000..228da9285 --- /dev/null +++ b/src/OpenSHC/Map/Units/UnitsState/selectionHasEngineers.cpp @@ -0,0 +1,16 @@ +#include "../UnitsState.func.hpp" + +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x00535550 + BOOLEnum UnitsState::selectionHasEngineers() { return this->selectionEngineers != 0; } + + } +} +} diff --git a/src/OpenSHC/Map/Units/UnitsState/setupUnitSharingCurrentTilePosition.cpp b/src/OpenSHC/Map/Units/UnitsState/setupUnitSharingCurrentTilePosition.cpp new file mode 100644 index 000000000..d448f7512 --- /dev/null +++ b/src/OpenSHC/Map/Units/UnitsState/setupUnitSharingCurrentTilePosition.cpp @@ -0,0 +1,16 @@ +#include "../UnitsState.func.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + // FUNCTION: STRONGHOLDCRUSADER 0x0053BB70 + void UnitsState::setupUnitSharingCurrentTilePosition(int unitID) + { + MACRO_CALL_MEMBER(OpenSHC::Map::Units::UnitsState_Func::setupUnitSharingTileIDs, this)( + unitID, this->units[unitID].tile); + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/UnitsState/sitDownIfStanding.cpp b/src/OpenSHC/Map/Units/UnitsState/sitDownIfStanding.cpp new file mode 100644 index 000000000..9bc8fce9f --- /dev/null +++ b/src/OpenSHC/Map/Units/UnitsState/sitDownIfStanding.cpp @@ -0,0 +1,20 @@ +#include "../UnitsState.func.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + // FUNCTION: STRONGHOLDCRUSADER 0x0052FBF0 + BOOLEnum UnitsState::sitDownIfStanding(int param_1) + { + if (this->units[param_1].seated != 0) { + return FALSE; + } + this->units[param_1].substate = 0x65; + this->units[param_1].animationCycleNumber = 0; + return TRUE; + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/UnitsState/standUpIfSeated.cpp b/src/OpenSHC/Map/Units/UnitsState/standUpIfSeated.cpp new file mode 100644 index 000000000..a3caedf87 --- /dev/null +++ b/src/OpenSHC/Map/Units/UnitsState/standUpIfSeated.cpp @@ -0,0 +1,20 @@ +#include "../UnitsState.func.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + // FUNCTION: STRONGHOLDCRUSADER 0x0052FBB0 + BOOLEnum UnitsState::standUpIfSeated(int param_1) + { + if (this->units[param_1].seated == 0) { + return FALSE; + } + this->units[param_1].substate = 100; + this->units[param_1].animationCycleNumber = 0; + return TRUE; + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/UnitsState/unitIsInMoat.cpp b/src/OpenSHC/Map/Units/UnitsState/unitIsInMoat.cpp new file mode 100644 index 000000000..3fbe35a41 --- /dev/null +++ b/src/OpenSHC/Map/Units/UnitsState/unitIsInMoat.cpp @@ -0,0 +1,22 @@ +#include "../UnitsState.func.hpp" + +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +#include "OpenSHC/Globals/DAT_TileMapState.hpp" + +namespace OpenSHC { +namespace Map { + namespace Units { + + using OpenSHC::Map::Logic1; + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x00534460 + BOOLEnum UnitsState::unitIsInMoat(int unitID) + { + return DAT_TileMapState::instance.LogicLayer[this->units[unitID].tile] >> 30 & TRUE; + } + + } +} +} diff --git a/src/OpenSHC/Map/Units/UpdateWorker_ConsiderTakingABreakUnk.cpp b/src/OpenSHC/Map/Units/UpdateWorker_ConsiderTakingABreakUnk.cpp new file mode 100644 index 000000000..57ddb4f4c --- /dev/null +++ b/src/OpenSHC/Map/Units/UpdateWorker_ConsiderTakingABreakUnk.cpp @@ -0,0 +1,21 @@ +#include "OpenSHC/Map/Units.func.hpp" +#include "OpenSHC/Map/Units/States/UnitState.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +#include "OpenSHC/Globals/DAT_UnitsState.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::Map::Units::States::UnitState; + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x0053CAC0 + BOOLEnum Units::UpdateWorker_ConsiderTakingABreakUnk(int unitID) + { + return MACRO_CALL(OpenSHC::Map::Units_Func::ConsiderHavingABreakNowUnk)( + unitID, (UnitState)((int)((int)(short)DAT_UnitsState::instance.units[unitID].state.generic))); + } + +} +} diff --git a/src/OpenSHC/Map/Version/SetBuildingsEmployeeCountToValue.cpp b/src/OpenSHC/Map/Version/SetBuildingsEmployeeCountToValue.cpp new file mode 100644 index 000000000..7954d6e4c --- /dev/null +++ b/src/OpenSHC/Map/Version/SetBuildingsEmployeeCountToValue.cpp @@ -0,0 +1,29 @@ +#include "OpenSHC/Map/Version.func.hpp" +#include "OpenSHC/Map/Buildings/Building.hpp" +#include "OpenSHC/Map/Buildings/BuildingLogicalState.hpp" + +#include "OpenSHC/Globals/DAT_BuildingDefinedData.hpp" +#include "OpenSHC/Globals/DAT_BuildingsState.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::Map::Buildings::Building; + using OpenSHC::Map::Buildings::BuildingLogicalState; + + // FUNCTION: STRONGHOLDCRUSADER 0x0041A390 + void Version::SetBuildingsEmployeeCountToValue() + { + for (int _buildingID = 1; _buildingID < 2000; _buildingID++) { + if (DAT_BuildingsState::instance.buildings[_buildingID].logicalState != ((BuildingLogicalState)0)) { + DAT_BuildingsState::instance.buildings[_buildingID].buildingTypeBasedEmployeeCount + = DAT_BuildingDefinedData::instance + .EmployeeCountPerBuildingType[DAT_BuildingsState::instance.buildings[_buildingID] + .buildingType] + .shortValue; + } + } + } + +} +} diff --git a/src/OpenSHC/Map/Version/SetDairyCheeseToZero.cpp b/src/OpenSHC/Map/Version/SetDairyCheeseToZero.cpp new file mode 100644 index 000000000..8f5dc46b4 --- /dev/null +++ b/src/OpenSHC/Map/Version/SetDairyCheeseToZero.cpp @@ -0,0 +1,32 @@ +#include "OpenSHC/Map/Version.func.hpp" +#include "OpenSHC/Map/Buildings/Building.hpp" +#include "OpenSHC/Map/Buildings/BuildingLogicalState.hpp" +#include "OpenSHC/Map/Buildings/BuildingType.hpp" + +#include "OpenSHC/Globals/DAT_BuildingsState.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::Map::Buildings::Building; + using OpenSHC::Map::Buildings::BuildingLogicalState; + using OpenSHC::Map::Buildings::BuildingType; + + /* + decompilerscript: committed: 2025-01-30 21:57:43.216000 + */ + + // FUNCTION: STRONGHOLDCRUSADER 0x0041A2B0 + void Version::SetDairyCheeseToZero() + { + for (int _buildingID = 1; _buildingID < 2000; _buildingID++) { + if ((DAT_BuildingsState::instance.buildings[_buildingID].logicalState != ((BuildingLogicalState)0)) + && (DAT_BuildingsState::instance.buildings[_buildingID].buildingType + == OpenSHC::Map::Buildings::BT_DAIRYFARM)) { + DAT_BuildingsState::instance.buildings[_buildingID].flagonsOfAleOrCheeseOrReleaseDogs = 0; + } + } + } + +} +} diff --git a/src/OpenSHC/Map/Version/SetUndamagedBuildingHealthToValue.cpp b/src/OpenSHC/Map/Version/SetUndamagedBuildingHealthToValue.cpp new file mode 100644 index 000000000..dc430a67d --- /dev/null +++ b/src/OpenSHC/Map/Version/SetUndamagedBuildingHealthToValue.cpp @@ -0,0 +1,31 @@ +#include "OpenSHC/Map/Version.func.hpp" +#include "OpenSHC/Map/Buildings/Building.hpp" +#include "OpenSHC/Map/Buildings/BuildingLogicalState.hpp" + +#include "OpenSHC/Globals/DAT_BuildingDefinedData.hpp" +#include "OpenSHC/Globals/DAT_BuildingsState.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::Map::Buildings::Building; + using OpenSHC::Map::Buildings::BuildingLogicalState; + + // FUNCTION: STRONGHOLDCRUSADER 0x0041A060 + void Version::SetUndamagedBuildingHealthToValue() + { + for (int _buildingID = 1; _buildingID < 2000; _buildingID += 1) { + if ((DAT_BuildingsState::instance.buildings[_buildingID].logicalState != ((BuildingLogicalState)0)) + && (DAT_BuildingsState::instance.buildings[_buildingID].currentHealth + == DAT_BuildingsState::instance.buildings[_buildingID].maxHealth)) { + uint health = DAT_BuildingDefinedData::instance + .BuildingHP[(short)DAT_BuildingsState::instance.buildings[_buildingID].buildingType] + .ushortValue; + DAT_BuildingsState::instance.buildings[_buildingID].maxHealth = health; + DAT_BuildingsState::instance.buildings[_buildingID].currentHealth = health; + } + } + } + +} +} diff --git a/src/OpenSHC/Map/Version/UpdateDestroyedBuildingCountData.cpp b/src/OpenSHC/Map/Version/UpdateDestroyedBuildingCountData.cpp new file mode 100644 index 000000000..85a599226 --- /dev/null +++ b/src/OpenSHC/Map/Version/UpdateDestroyedBuildingCountData.cpp @@ -0,0 +1,15 @@ +#include "OpenSHC/Map/Version.func.hpp" + +#include "OpenSHC/Globals/DAT_DestroyedBuildingsCountHistory.hpp" + +namespace OpenSHC { +namespace Map { + + // FUNCTION: STRONGHOLDCRUSADER 0x0044AAA0 + void Version::UpdateDestroyedBuildingCountData(int param_1) + { + DAT_DestroyedBuildingsCountHistory::instance[0] = DAT_DestroyedBuildingsCountHistory::instance[0] + param_1; + } + +} +} diff --git a/src/OpenSHC/Map/Version/UpdateUnitLossData.cpp b/src/OpenSHC/Map/Version/UpdateUnitLossData.cpp new file mode 100644 index 000000000..7cc5c29ec --- /dev/null +++ b/src/OpenSHC/Map/Version/UpdateUnitLossData.cpp @@ -0,0 +1,17 @@ +#include "OpenSHC/Map/Version.func.hpp" + +#include "OpenSHC/Globals/DAT_UnitValueLossesPerEnemyPlayer.hpp" + +namespace OpenSHC { +namespace Map { + + // FUNCTION: STRONGHOLDCRUSADER 0x0044AA80 + void Version::UpdateUnitLossData(int lossValue, int playerID) + { + if (lossValue < 0) { + DAT_UnitValueLossesPerEnemyPlayer::instance[playerID] -= lossValue; + } + } + +} +} diff --git a/src/OpenSHC/Map/Version/UpgradeBuildingField1.cpp b/src/OpenSHC/Map/Version/UpgradeBuildingField1.cpp new file mode 100644 index 000000000..acc2b16d1 --- /dev/null +++ b/src/OpenSHC/Map/Version/UpgradeBuildingField1.cpp @@ -0,0 +1,25 @@ +#include "OpenSHC/Map/Version.func.hpp" +#include "OpenSHC/Map/Buildings/Building.hpp" +#include "OpenSHC/Map/Buildings/BuildingLogicalState.hpp" + +#include "OpenSHC/Globals/DAT_BuildingsState.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::Map::Buildings::Building; + using OpenSHC::Map::Buildings::BuildingLogicalState; + + // FUNCTION: STRONGHOLDCRUSADER 0x0041A0D0 + void Version::UpgradeBuildingField1() + { + for (int _buildingID = 1; _buildingID < 2000; _buildingID++) { + if (DAT_BuildingsState::instance.buildings[_buildingID].logicalState != ((BuildingLogicalState)0)) { + DAT_BuildingsState::instance.buildings[_buildingID].uidWhenPlaced + = DAT_BuildingsState::instance.buildings[_buildingID].uidPlaced; + } + } + } + +} +} diff --git a/src/OpenSHC/Map/Version/UpgradeBuildingField2.cpp b/src/OpenSHC/Map/Version/UpgradeBuildingField2.cpp new file mode 100644 index 000000000..b252d01fc --- /dev/null +++ b/src/OpenSHC/Map/Version/UpgradeBuildingField2.cpp @@ -0,0 +1,25 @@ +#include "OpenSHC/Map/Version.func.hpp" +#include "OpenSHC/Map/Buildings/Building.hpp" +#include "OpenSHC/Map/Buildings/BuildingLogicalState.hpp" + +#include "OpenSHC/Globals/DAT_BuildingsState.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::Map::Buildings::Building; + using OpenSHC::Map::Buildings::BuildingLogicalState; + + // FUNCTION: STRONGHOLDCRUSADER 0x0041A3C0 + void Version::UpgradeBuildingField2() + { + for (int _buildingID = 1; _buildingID < 2000; _buildingID++) { + if (DAT_BuildingsState::instance.buildings[_buildingID].logicalState != ((BuildingLogicalState)0)) { + DAT_BuildingsState::instance.buildings[_buildingID].field206_0x288 = 0; + DAT_BuildingsState::instance.buildings[_buildingID].field188_0x264 = 0; + } + } + } + +} +} diff --git a/src/OpenSHC/Map/Version/UpgradeBuildingField4.cpp b/src/OpenSHC/Map/Version/UpgradeBuildingField4.cpp new file mode 100644 index 000000000..a9cee13e8 --- /dev/null +++ b/src/OpenSHC/Map/Version/UpgradeBuildingField4.cpp @@ -0,0 +1,24 @@ +#include "OpenSHC/Map/Version.func.hpp" +#include "OpenSHC/Map/Buildings/Building.hpp" +#include "OpenSHC/Map/Buildings/BuildingLogicalState.hpp" + +#include "OpenSHC/Globals/DAT_BuildingsState.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::Map::Buildings::Building; + using OpenSHC::Map::Buildings::BuildingLogicalState; + + // FUNCTION: STRONGHOLDCRUSADER 0x0041A5F0 + void Version::UpgradeBuildingField4() + { + for (int _buildingID = 1; _buildingID < 2000; _buildingID++) { + if (DAT_BuildingsState::instance.buildings[_buildingID].logicalState != ((BuildingLogicalState)0)) { + DAT_BuildingsState::instance.buildings[_buildingID].field244_0x2c6 = 0; + } + } + } + +} +} diff --git a/src/OpenSHC/Map/Version/UpgradeClearBuildings1000AndHigher.cpp b/src/OpenSHC/Map/Version/UpgradeClearBuildings1000AndHigher.cpp new file mode 100644 index 000000000..5f2d93a59 --- /dev/null +++ b/src/OpenSHC/Map/Version/UpgradeClearBuildings1000AndHigher.cpp @@ -0,0 +1,23 @@ +#include "OpenSHC/IO/LowLevelMemory.func.hpp" +#include "OpenSHC/Map/Version.func.hpp" +#include "OpenSHC/Map/Buildings/Building.hpp" + +#include "OpenSHC/Globals/DAT_BuildingsState.hpp" +#include "OpenSHC/Globals/DAT_LowLevelMemory.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::Map::Buildings::Building; + + // FUNCTION: STRONGHOLDCRUSADER 0x0041A620 + void Version::UpgradeClearBuildings1000AndHigher() + { + for (int _buildingID = 1000; _buildingID < 2000; _buildingID++) { + MACRO_CALL_MEMBER(OpenSHC::IO::LowLevelMemory_Func::fillMemory_ByteValue, DAT_LowLevelMemory::ptr)( + 0x32c, '\0', &DAT_BuildingsState::instance.buildings[_buildingID]); + } + } + +} +} diff --git a/src/OpenSHC/Map/Version/UpgradeFirst9Buildings.cpp b/src/OpenSHC/Map/Version/UpgradeFirst9Buildings.cpp new file mode 100644 index 000000000..aad5b09e6 --- /dev/null +++ b/src/OpenSHC/Map/Version/UpgradeFirst9Buildings.cpp @@ -0,0 +1,21 @@ +#include "OpenSHC/Map/Buildings/BuildingsState.func.hpp" +#include "OpenSHC/Map/Version.func.hpp" + +#include "OpenSHC/Globals/DAT_BuildingsState.hpp" + +namespace OpenSHC { +namespace Map { + + // FUNCTION: STRONGHOLDCRUSADER 0x0041A0A0 + void Version::UpgradeFirst9Buildings() + { + for (int buildingID = 1; buildingID < 9; buildingID++) { + MACRO_CALL_MEMBER(OpenSHC::Map::Buildings::BuildingsState_Func::setupBarracksCampgroundPositions, + DAT_BuildingsState::ptr)(buildingID); + MACRO_CALL_MEMBER(OpenSHC::Map::Buildings::BuildingsState_Func::setupMercenaryPostCampgroundPositions, + DAT_BuildingsState::ptr)(buildingID); + } + } + +} +} diff --git a/src/OpenSHC/Map/Version/UpgradeKillingPitField.cpp b/src/OpenSHC/Map/Version/UpgradeKillingPitField.cpp new file mode 100644 index 000000000..24ee46f36 --- /dev/null +++ b/src/OpenSHC/Map/Version/UpgradeKillingPitField.cpp @@ -0,0 +1,28 @@ +#include "OpenSHC/Map/Version.func.hpp" +#include "OpenSHC/Map/Buildings/Building.hpp" +#include "OpenSHC/Map/Buildings/BuildingLogicalState.hpp" +#include "OpenSHC/Map/Buildings/BuildingType.hpp" + +#include "OpenSHC/Globals/DAT_BuildingsState.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::Map::Buildings::Building; + using OpenSHC::Map::Buildings::BuildingLogicalState; + using OpenSHC::Map::Buildings::BuildingType; + + // FUNCTION: STRONGHOLDCRUSADER 0x0041A5C0 + void Version::UpgradeKillingPitField() + { + for (int _buildingID = 1; _buildingID < 2000; _buildingID++) { + if ((DAT_BuildingsState::instance.buildings[_buildingID].logicalState != ((BuildingLogicalState)0)) + && (DAT_BuildingsState::instance.buildings[_buildingID].buildingType + == OpenSHC::Map::Buildings::BT_KILLINGPIT)) { + DAT_BuildingsState::instance.buildings[_buildingID].killingPitField = 0; + } + } + } + +} +} diff --git a/src/OpenSHC/Map/Version/UpgradeMapLogicToVersion_125.cpp b/src/OpenSHC/Map/Version/UpgradeMapLogicToVersion_125.cpp new file mode 100644 index 000000000..0aeb79a9d --- /dev/null +++ b/src/OpenSHC/Map/Version/UpgradeMapLogicToVersion_125.cpp @@ -0,0 +1,21 @@ +#include "OpenSHC/Map/Version.func.hpp" + +#include "OpenSHC/Globals/DAT_TileMapState.hpp" + +namespace OpenSHC { +namespace Map { + + // FUNCTION: STRONGHOLDCRUSADER 0x005011C0 + void Version::UpgradeMapLogicToVersion_125() + { + for (int i = 0; i < 80400; i++) { + if (DAT_TileMapState::instance.HeightLayer[i] == 80) { + DAT_TileMapState::instance.Logic2Layer[i] = 4; + } else if (DAT_TileMapState::instance.HeightLayer[i] == 130) { + DAT_TileMapState::instance.Logic2Layer[i] = 8; + } + } + } + +} +} diff --git a/src/OpenSHC/Map/Version/UpgradeMapLogicToVersion_147.cpp b/src/OpenSHC/Map/Version/UpgradeMapLogicToVersion_147.cpp new file mode 100644 index 000000000..616321625 --- /dev/null +++ b/src/OpenSHC/Map/Version/UpgradeMapLogicToVersion_147.cpp @@ -0,0 +1,21 @@ +#include "OpenSHC/Map/Version.func.hpp" + +#include "OpenSHC/Globals/DAT_TileMapState.hpp" + +namespace OpenSHC { +namespace Map { + + // FUNCTION: STRONGHOLDCRUSADER 0x00501730 + void Version::UpgradeMapLogicToVersion_147() + { + for (int _tile = 0; _tile < 80400; _tile++) { + if (156 < DAT_TileMapState::instance.DefaultHeightLayer[_tile]) { + DAT_TileMapState::instance.HeightLayer[_tile] = DAT_TileMapState::instance.HeightLayer[_tile] + + (156 - DAT_TileMapState::instance.DefaultHeightLayer[_tile]); + DAT_TileMapState::instance.DefaultHeightLayer[_tile] = 156; + } + } + } + +} +} diff --git a/src/OpenSHC/Map/Version/UpgradeMapTribesStateVersionTo_142.cpp b/src/OpenSHC/Map/Version/UpgradeMapTribesStateVersionTo_142.cpp new file mode 100644 index 000000000..f0e01abc6 --- /dev/null +++ b/src/OpenSHC/Map/Version/UpgradeMapTribesStateVersionTo_142.cpp @@ -0,0 +1,23 @@ +#include "OpenSHC/Map/Version.func.hpp" +#include "OpenSHC/Map/Units/SomeTribeBehaviorType.hpp" + +#include "OpenSHC/Globals/DAT_TribesState.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::Map::Units::SomeTribeBehaviorType; + + // FUNCTION: STRONGHOLDCRUSADER 0x00523E00 + void Version::UpgradeMapTribesStateVersionTo_142() + { + for (int _tribeID = 1; _tribeID < 1250; _tribeID++) { + if (DAT_TribesState::instance.tribes[_tribeID].tribeState != 0 + && DAT_TribesState::instance.tribes[_tribeID].attackWave <= 0) { + DAT_TribesState::instance.tribes[_tribeID].tribeBehaviorType = 0; + } + } + } + +} +} diff --git a/src/OpenSHC/Map/Version/UpgradeMapTribesStateVersionTo_Unknown2.cpp b/src/OpenSHC/Map/Version/UpgradeMapTribesStateVersionTo_Unknown2.cpp new file mode 100644 index 000000000..088d3b49f --- /dev/null +++ b/src/OpenSHC/Map/Version/UpgradeMapTribesStateVersionTo_Unknown2.cpp @@ -0,0 +1,21 @@ +#include "OpenSHC/Map/Units/TribesState.func.hpp" +#include "OpenSHC/Map/Version.func.hpp" + +#include "OpenSHC/Globals/DAT_TribesState.hpp" + +namespace OpenSHC { +namespace Map { + + // FUNCTION: STRONGHOLDCRUSADER 0x00523EB0 + void Version::UpgradeMapTribesStateVersionTo_Unknown2() + { + for (int tribeID = 1; tribeID < 1250; tribeID++) { + if (DAT_TribesState::instance.tribes[tribeID].tribeState != 0) { + MACRO_CALL_MEMBER(OpenSHC::Map::Units::TribesState_Func::setWhetherTribeContainsAnyUnits, + DAT_TribesState::ptr)(tribeID); + } + } + } + +} +} diff --git a/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_112.cpp b/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_112.cpp new file mode 100644 index 000000000..9ebfff2af --- /dev/null +++ b/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_112.cpp @@ -0,0 +1,29 @@ +#include "OpenSHC/Map/Version.func.hpp" +#include "OpenSHC/Map/Units/Unit.hpp" +#include "OpenSHC/Map/Units/UnitLogicState.hpp" + +#include "OpenSHC/Globals/DAT_CurrentUnitSlotID.hpp" +#include "OpenSHC/Globals/DAT_UnitsState.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::Map::Units::Unit; + using OpenSHC::Map::Units::UnitLogicState; + + // FUNCTION: STRONGHOLDCRUSADER 0x0053B340 + void Version::UpgradeMapUnitsTo_112() + { + DAT_CurrentUnitSlotID::instance = 2500; + // fixme: the reimplementation always unrolls this for loop (because 2499/3 = 833), but the original isn't + // unrolled + for (int _unitID = 1; _unitID < 2500; _unitID++) { + if (DAT_UnitsState::instance.units[_unitID].logicalState == Units::ULS_NORMAL) { + DAT_UnitsState::instance.units[_unitID].buildingID + = DAT_UnitsState::instance.units[_unitID].workplaceBuildingID_1; + } + } + } + +} +} diff --git a/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_114.cpp b/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_114.cpp new file mode 100644 index 000000000..4f93debd0 --- /dev/null +++ b/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_114.cpp @@ -0,0 +1,26 @@ +#include "OpenSHC/Map/Version.func.hpp" +#include "OpenSHC/Map/Units/UnitLogicState.hpp" +#include "OpenSHC/Map/Units/UnitLogicStateShort.hpp" + +#include "OpenSHC/Globals/DAT_CurrentUnitSlotID.hpp" +#include "OpenSHC/Globals/DAT_UnitsState.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::Map::Units::UnitLogicState; + using OpenSHC::Map::Units::UnitLogicStateShort; + + // FUNCTION: STRONGHOLDCRUSADER 0x0053B310 + void Version::UpgradeMapUnitsTo_114() + { + DAT_CurrentUnitSlotID::instance = 2500; + for (int i = 1; i < 2500; i++) { + if (DAT_UnitsState::instance.units[i].logicalState == Units::ULS_NORMAL) { + DAT_UnitsState::instance.units[i].calculatedOwnerPlayerIndex = 0; + } + } + } + +} +} diff --git a/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_130.cpp b/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_130.cpp new file mode 100644 index 000000000..96abcb0d1 --- /dev/null +++ b/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_130.cpp @@ -0,0 +1,30 @@ +#include "OpenSHC/Map/Version.func.hpp" +#include "OpenSHC/Map/Units/UnitLogicState.hpp" +#include "OpenSHC/Map/Units/UnitType.hpp" +#include "OpenSHC/Map/Units/UnitTypeShort.hpp" + +#include "OpenSHC/Globals/DAT_CurrentUnitSlotID.hpp" +#include "OpenSHC/Globals/DAT_UnitsState.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::Map::Units::UnitLogicState; + using OpenSHC::Map::Units::UnitType; + using OpenSHC::Map::Units::UnitTypeShort; + + // FUNCTION: STRONGHOLDCRUSADER 0x0053B530 + void Version::UpgradeMapUnitsTo_130() + { + DAT_CurrentUnitSlotID::instance = 2500; + for (int i = 1; i < 2500; i++) { + if (DAT_UnitsState::instance.units[i].logicalState == Units::ULS_NORMAL + && DAT_UnitsState::instance.units[i].unitType == Units::UT_COW) { + DAT_UnitsState::instance.units[i].digTileX__OR__countCurrentlyManningEnginers__OR__forCowsRandomBelow300 + = 0; + } + } + } + +} +} diff --git a/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_149.cpp b/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_149.cpp new file mode 100644 index 000000000..7061514ef --- /dev/null +++ b/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_149.cpp @@ -0,0 +1,26 @@ +#include "OpenSHC/Map/Version.func.hpp" +#include "OpenSHC/Map/Units/Unit.hpp" +#include "OpenSHC/Map/Units/UnitLogicState.hpp" + +#include "OpenSHC/Globals/DAT_CurrentUnitSlotID.hpp" +#include "OpenSHC/Globals/DAT_UnitsState.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::Map::Units::Unit; + using OpenSHC::Map::Units::UnitLogicState; + + // FUNCTION: STRONGHOLDCRUSADER 0x0053B570 + void Version::UpgradeMapUnitsTo_149() + { + DAT_CurrentUnitSlotID::instance = 2500; + for (int _unitID = 1; _unitID < 2500; _unitID++) { + if (DAT_UnitsState::instance.units[_unitID].logicalState == Units::ULS_NORMAL) { + DAT_UnitsState::instance.units[_unitID].shootBeforeStop = 0; + } + } + } + +} +} diff --git a/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_155.cpp b/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_155.cpp new file mode 100644 index 000000000..ff73ed357 --- /dev/null +++ b/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_155.cpp @@ -0,0 +1,26 @@ +#include "OpenSHC/Map/Version.func.hpp" +#include "OpenSHC/Map/Units/Unit.hpp" +#include "OpenSHC/Map/Units/UnitLogicState.hpp" + +#include "OpenSHC/Globals/DAT_CurrentUnitSlotID.hpp" +#include "OpenSHC/Globals/DAT_UnitsState.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::Map::Units::Unit; + using OpenSHC::Map::Units::UnitLogicState; + + // FUNCTION: STRONGHOLDCRUSADER 0x0053B5E0 + void Version::UpgradeMapUnitsTo_155() + { + DAT_CurrentUnitSlotID::instance = 2500; + for (int _unitID = 1; _unitID < 2500; _unitID++) { + if (DAT_UnitsState::instance.units[_unitID].logicalState != Units::ULS_INVISIBLE) { + DAT_UnitsState::instance.units[_unitID].killedFlagUnk = 0; + } + } + } + +} +} diff --git a/src/OpenSHC/Map/Version/UpgradeOutpostField.cpp b/src/OpenSHC/Map/Version/UpgradeOutpostField.cpp new file mode 100644 index 000000000..de8cc321b --- /dev/null +++ b/src/OpenSHC/Map/Version/UpgradeOutpostField.cpp @@ -0,0 +1,30 @@ +#include "OpenSHC/Map/Version.func.hpp" +#include "OpenSHC/Map/Buildings/Building.hpp" +#include "OpenSHC/Map/Buildings/BuildingLogicalState.hpp" +#include "OpenSHC/Map/Buildings/BuildingType.hpp" + +#include "OpenSHC/Globals/DAT_BuildingsState.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::Map::Buildings::Building; + using OpenSHC::Map::Buildings::BuildingLogicalState; + using OpenSHC::Map::Buildings::BuildingType; + + // FUNCTION: STRONGHOLDCRUSADER 0x0041A710 + void Version::UpgradeOutpostField() + { + for (int _buildingID = 1; _buildingID < 2000; _buildingID++) { + if ((DAT_BuildingsState::instance.buildings[_buildingID].logicalState != ((BuildingLogicalState)0)) + && ((DAT_BuildingsState::instance.buildings[_buildingID].buildingType + == OpenSHC::Map::Buildings::BT_OUTPOST_EUROPEAN) + || (DAT_BuildingsState::instance.buildings[_buildingID].buildingType + == OpenSHC::Map::Buildings::BT_OUTPOST_ARABIAN))) { + DAT_BuildingsState::instance.buildings[_buildingID].randomOutpostField = 0; + } + } + } + +} +} diff --git a/src/OpenSHC/Map/Version/UpgradeRemoveRocksBeyond1000.cpp b/src/OpenSHC/Map/Version/UpgradeRemoveRocksBeyond1000.cpp new file mode 100644 index 000000000..2ae7d8c8a --- /dev/null +++ b/src/OpenSHC/Map/Version/UpgradeRemoveRocksBeyond1000.cpp @@ -0,0 +1,23 @@ +#include "OpenSHC/IO/LowLevelMemory.func.hpp" +#include "OpenSHC/Map/Version.func.hpp" +#include "OpenSHC/Map/Rocks/Rock.hpp" + +#include "OpenSHC/Globals/DAT_LandscapeState.hpp" +#include "OpenSHC/Globals/DAT_LowLevelMemory.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::Map::Rocks::Rock; + + // FUNCTION: STRONGHOLDCRUSADER 0x004F3900 + void Version::UpgradeRemoveRocksBeyond1000() + { + for (int i = 2000; i < 4000; i += 1) { + MACRO_CALL_MEMBER(OpenSHC::IO::LowLevelMemory_Func::fillMemory_ByteValue, DAT_LowLevelMemory::ptr)( + 32, 0, &DAT_LandscapeState::instance.rocks[i]); + } + } + +} +} diff --git a/src/OpenSHC/Map/Version/UpgradeSetCurrentEntityID3000.cpp b/src/OpenSHC/Map/Version/UpgradeSetCurrentEntityID3000.cpp new file mode 100644 index 000000000..97b23d686 --- /dev/null +++ b/src/OpenSHC/Map/Version/UpgradeSetCurrentEntityID3000.cpp @@ -0,0 +1,12 @@ +#include "OpenSHC/Map/Version.func.hpp" + +#include "OpenSHC/Globals/DAT_CurrentEntityID.hpp" + +namespace OpenSHC { +namespace Map { + + // FUNCTION: STRONGHOLDCRUSADER 0x004038A0 + void Version::UpgradeSetCurrentEntityID3000() { DAT_CurrentEntityID::instance = 3000; } + +} +} diff --git a/src/OpenSHC/Map/Version/UpgradeSolitaryMapBuildingField3.cpp b/src/OpenSHC/Map/Version/UpgradeSolitaryMapBuildingField3.cpp new file mode 100644 index 000000000..974015a37 --- /dev/null +++ b/src/OpenSHC/Map/Version/UpgradeSolitaryMapBuildingField3.cpp @@ -0,0 +1,29 @@ +#include "OpenSHC/Map/Version.func.hpp" +#include "OpenSHC/Game/GameMode.hpp" +#include "OpenSHC/Map/Buildings/Building.hpp" +#include "OpenSHC/Map/Buildings/BuildingLogicalState.hpp" + +#include "OpenSHC/Globals/DAT_BuildingsState.hpp" +#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::Game::GameMode; + using OpenSHC::Map::Buildings::Building; + using OpenSHC::Map::Buildings::BuildingLogicalState; + + // FUNCTION: STRONGHOLDCRUSADER 0x0041A3F0 + void Version::UpgradeSolitaryMapBuildingField3() + { + if (DAT_GameSynchronyState::instance.currentGameMode == OpenSHC::Game::GM_SOLITARY) { + for (int _buildingID = 1; _buildingID < 2000; _buildingID++) { + if (DAT_BuildingsState::instance.buildings[_buildingID].logicalState != ((BuildingLogicalState)0)) { + DAT_BuildingsState::instance.buildings[_buildingID].playerColorUnk = 0; + } + } + } + } + +} +} diff --git a/src/OpenSHC/Map/WallAndPitchState/resetWallAndPitchState.cpp b/src/OpenSHC/Map/WallAndPitchState/resetWallAndPitchState.cpp new file mode 100644 index 000000000..3f6880b1b --- /dev/null +++ b/src/OpenSHC/Map/WallAndPitchState/resetWallAndPitchState.cpp @@ -0,0 +1,28 @@ +#include "OpenSHC/Map/WallAndPitchState.func.hpp" +#include "OpenSHC/Game/GameMode2.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +#include "OpenSHC/Globals/DAT_GameCore.hpp" +#include "OpenSHC/Globals/DAT_UIDragDropDefinedData.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::Game::GameMode2; + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x00500C80 + void WallAndPitchState::resetWallAndPitchState() + { + if ((DAT_GameCore::instance.gameMode_2 != OpenSHC::Game::GM_SKIRMISH_AND_MULTIPLAYER) + && (DAT_GameCore::instance.gameMode_2 != OpenSHC::Game::GM_SIEGE_THAT)) { + this->state = 4; + this->countdown = 400; + this->index = 0; + this->counter = 0; + DAT_UIDragDropDefinedData::instance.MenuView_TriggerInitial = TRUE; + } + } + +} +} diff --git a/src/OpenSHC/Map/WallAndPitchState/resetWallPlacementInfo.cpp b/src/OpenSHC/Map/WallAndPitchState/resetWallPlacementInfo.cpp new file mode 100644 index 000000000..c6e948e76 --- /dev/null +++ b/src/OpenSHC/Map/WallAndPitchState/resetWallPlacementInfo.cpp @@ -0,0 +1,28 @@ +#include "OpenSHC/Map/WallAndPitchState.func.hpp" +#include "OpenSHC/Game/GameMode2.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +#include "OpenSHC/Globals/DAT_GameCore.hpp" +#include "OpenSHC/Globals/DAT_UIDragDropDefinedData.hpp" + +namespace OpenSHC { +namespace Map { + + using OpenSHC::Game::GameMode2; + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x00500D30 + void WallAndPitchState::resetWallPlacementInfo() + { + if ((DAT_GameCore::instance.gameMode_2 != OpenSHC::Game::GM_SKIRMISH_AND_MULTIPLAYER) + && (DAT_GameCore::instance.gameMode_2 != OpenSHC::Game::GM_SIEGE_THAT)) { + this->state = 3; + this->countdown = 400; + this->index = 0; + this->counter = 0; + DAT_UIDragDropDefinedData::instance.MenuView_TriggerInitial = TRUE; + } + } + +} +} diff --git a/src/OpenSHC/Map/WildlifeState/clearWildlifeState.cpp b/src/OpenSHC/Map/WildlifeState/clearWildlifeState.cpp new file mode 100644 index 000000000..d6ba10c80 --- /dev/null +++ b/src/OpenSHC/Map/WildlifeState/clearWildlifeState.cpp @@ -0,0 +1,17 @@ +#include "OpenSHC/IO/LowLevelMemory.func.hpp" +#include "OpenSHC/Map/WildlifeState.func.hpp" + +#include "OpenSHC/Globals/DAT_LowLevelMemory.hpp" + +namespace OpenSHC { +namespace Map { + + // FUNCTION: STRONGHOLDCRUSADER 0x0052B9F0 + void WildlifeState::clearWildlifeState() + { + MACRO_CALL_MEMBER(OpenSHC::IO::LowLevelMemory_Func::fillMemory_ByteValue, DAT_LowLevelMemory::ptr)( + 256000, 0, &this->grid[0][0]); + } + +} +} diff --git a/src/OpenSHC/Rendering/ViewportRenderState/computeTileXOffset.cpp b/src/OpenSHC/Rendering/ViewportRenderState/computeTileXOffset.cpp new file mode 100644 index 000000000..91e7004da --- /dev/null +++ b/src/OpenSHC/Rendering/ViewportRenderState/computeTileXOffset.cpp @@ -0,0 +1,13 @@ +#include "../ViewportRenderState.func.hpp" + +namespace OpenSHC { +namespace Rendering { + + // FUNCTION: STRONGHOLDCRUSADER 0x004092E0 + int ViewportRenderState::computeTileXOffset(int param_1, int param_2) + { + return param_1 - this->translationMatrix[param_2].addXgetTile; + } + +} +} diff --git a/src/OpenSHC/Rendering/ViewportRenderState/createFloatingTextElement.cpp b/src/OpenSHC/Rendering/ViewportRenderState/createFloatingTextElement.cpp new file mode 100644 index 000000000..a790f02a5 --- /dev/null +++ b/src/OpenSHC/Rendering/ViewportRenderState/createFloatingTextElement.cpp @@ -0,0 +1,17 @@ +#include "OpenSHC/Rendering/ViewportRenderState.func.hpp" +#include "OpenSHC/IO/Graphics/GmID.hpp" + +namespace OpenSHC { +namespace Rendering { + + using OpenSHC::IO::Graphics::GmID; + + // FUNCTION: STRONGHOLDCRUSADER 0x004E8CC0 + void ViewportRenderState::createFloatingTextElement(int param_1, int param_2, int param_3, int param_4, int param_5) + { + MACRO_CALL_MEMBER(OpenSHC::Rendering::ViewportRenderState_Func::createFloatingLayerElement, this)( + OpenSHC::IO::Graphics::GID_FLOATS, param_1, param_2, param_3, param_4, param_5); + } + +} +} diff --git a/src/OpenSHC/Rendering/ViewportRenderState/focusOnCoordinate.cpp b/src/OpenSHC/Rendering/ViewportRenderState/focusOnCoordinate.cpp new file mode 100644 index 000000000..a2a9c1d26 --- /dev/null +++ b/src/OpenSHC/Rendering/ViewportRenderState/focusOnCoordinate.cpp @@ -0,0 +1,14 @@ +#include "OpenSHC/Rendering/ViewportRenderState.func.hpp" + +namespace OpenSHC { +namespace Rendering { + + // FUNCTION: STRONGHOLDCRUSADER 0x004E8CA0 + void ViewportRenderState::focusOnCoordinate(int x, int y) + { + MACRO_CALL_MEMBER(OpenSHC::Rendering::ViewportRenderState_Func::focusOnTile, this)( + this->translationMatrix[y].addXgetTile + x); + } + +} +} diff --git a/src/OpenSHC/Rendering/ViewportRenderState/resetBatchedRender.cpp b/src/OpenSHC/Rendering/ViewportRenderState/resetBatchedRender.cpp new file mode 100644 index 000000000..e11881f1e --- /dev/null +++ b/src/OpenSHC/Rendering/ViewportRenderState/resetBatchedRender.cpp @@ -0,0 +1,19 @@ +#include "OpenSHC/Rendering/ViewportRenderState.func.hpp" + +namespace OpenSHC { +namespace Rendering { + + // FUNCTION: STRONGHOLDCRUSADER 0x004E2600 + int ViewportRenderState::resetBatchedRender() + { + this->unitBatchedRenderCounterUntil6 = 1; + this->unitRender1 = 0; + this->unitRender2 = 0; + this->unitRender3 = 0; + this->unitRender4 = 0; + this->unitRender5 = 0; + return 0; + } + +} +} diff --git a/src/OpenSHC/Rendering/ViewportRenderState/resetupViewportThunk.cpp b/src/OpenSHC/Rendering/ViewportRenderState/resetupViewportThunk.cpp new file mode 100644 index 000000000..4c88f30e3 --- /dev/null +++ b/src/OpenSHC/Rendering/ViewportRenderState/resetupViewportThunk.cpp @@ -0,0 +1,14 @@ +#include "../ViewportRenderState.func.hpp" + +namespace OpenSHC { +namespace Rendering { + + // FUNCTION: STRONGHOLDCRUSADER 0x004E7800 + void ViewportRenderState::resetupViewportThunk() + { + MACRO_CALL_MEMBER(OpenSHC::Rendering::ViewportRenderState_Func::resetupViewport, this)( + this->viewportState.isZoomedOutUnk); + } + +} +} diff --git a/src/OpenSHC/Rendering/ViewportRenderState/restoreFocusTile.cpp b/src/OpenSHC/Rendering/ViewportRenderState/restoreFocusTile.cpp new file mode 100644 index 000000000..cba664253 --- /dev/null +++ b/src/OpenSHC/Rendering/ViewportRenderState/restoreFocusTile.cpp @@ -0,0 +1,13 @@ +#include "../ViewportRenderState.func.hpp" + +namespace OpenSHC { +namespace Rendering { + + // FUNCTION: STRONGHOLDCRUSADER 0x004E8C90 + void ViewportRenderState::restoreFocusTile() + { + MACRO_CALL_MEMBER(OpenSHC::Rendering::ViewportRenderState_Func::focusOnTile, this)(this->field44_0x18b738); + } + +} +} diff --git a/src/OpenSHC/Rendering/ViewportRenderState/translateXYToTile.cpp b/src/OpenSHC/Rendering/ViewportRenderState/translateXYToTile.cpp new file mode 100644 index 000000000..437a8147a --- /dev/null +++ b/src/OpenSHC/Rendering/ViewportRenderState/translateXYToTile.cpp @@ -0,0 +1,10 @@ +#include "../ViewportRenderState.func.hpp" + +namespace OpenSHC { +namespace Rendering { + + // FUNCTION: STRONGHOLDCRUSADER 0x00401040 + int ViewportRenderState::translateXYToTile(int x, int y) { return this->translationMatrix[y].addXgetTile + x; } + +} +} diff --git a/src/OpenSHC/Rendering/ViewportRenderState/xyAreValid.cpp b/src/OpenSHC/Rendering/ViewportRenderState/xyAreValid.cpp new file mode 100644 index 000000000..7e538608b --- /dev/null +++ b/src/OpenSHC/Rendering/ViewportRenderState/xyAreValid.cpp @@ -0,0 +1,17 @@ +#include "../ViewportRenderState.func.hpp" + +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +namespace OpenSHC { +namespace Rendering { + + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x00401000 + BOOLEnum ViewportRenderState::xyAreValid(uint x, uint y) + { + return ((x <= 399) && (y <= 399)) && this->DAT_BinaryTileMap400x400[y * 400 + x] != 0; + } + +} +} diff --git a/src/OpenSHC/Rendering/WindowInformation/storeWindowRectangleInfoUnk.cpp b/src/OpenSHC/Rendering/WindowInformation/storeWindowRectangleInfoUnk.cpp new file mode 100644 index 000000000..3337070c2 --- /dev/null +++ b/src/OpenSHC/Rendering/WindowInformation/storeWindowRectangleInfoUnk.cpp @@ -0,0 +1,16 @@ +#include "OpenSHC/Rendering/WindowInformation.func.hpp" + +namespace OpenSHC { +namespace Rendering { + + // FUNCTION: STRONGHOLDCRUSADER 0x00467F60 + void WindowInformation::storeWindowRectangleInfoUnk(LONG param_1, LONG param_2, LONG param_3, LONG param_4) + { + this->RECT_SomeGameWindowRectUnk.left = param_1; + this->RECT_SomeGameWindowRectUnk.top = param_3; + this->RECT_SomeGameWindowRectUnk.right = param_2; + this->RECT_SomeGameWindowRectUnk.bottom = param_4; + } + +} +} diff --git a/src/OpenSHC/Synchrony/Actions/ChangeRations.cpp b/src/OpenSHC/Synchrony/Actions/ChangeRations.cpp new file mode 100644 index 000000000..d627dde81 --- /dev/null +++ b/src/OpenSHC/Synchrony/Actions/ChangeRations.cpp @@ -0,0 +1,15 @@ +#include "OpenSHC/Synchrony/Actions.func.hpp" + +#include "OpenSHC/Globals/DAT_GameState.hpp" + +namespace OpenSHC { +namespace Synchrony { + + // FUNCTION: STRONGHOLDCRUSADER 0x00465890 + void Actions::ChangeRations(int playerID, int rationsSetting) + { + DAT_GameState::instance.playerDataArray[playerID].rationsSetting = rationsSetting; + } + +} +} diff --git a/src/OpenSHC/Synchrony/Actions/ChangeTaxes.cpp b/src/OpenSHC/Synchrony/Actions/ChangeTaxes.cpp new file mode 100644 index 000000000..dae8f1c02 --- /dev/null +++ b/src/OpenSHC/Synchrony/Actions/ChangeTaxes.cpp @@ -0,0 +1,15 @@ +#include "OpenSHC/Synchrony/Actions.func.hpp" + +#include "OpenSHC/Globals/DAT_GameState.hpp" + +namespace OpenSHC { +namespace Synchrony { + + // FUNCTION: STRONGHOLDCRUSADER 0x00465800 + void Actions::ChangeTaxes(int playerID, int taxesSetting) + { + DAT_GameState::instance.playerDataArray[playerID].taxesSetting = taxesSetting; + } + +} +} diff --git a/src/OpenSHC/Synchrony/Actions/RemovePositionOfPlayer.cpp b/src/OpenSHC/Synchrony/Actions/RemovePositionOfPlayer.cpp new file mode 100644 index 000000000..503542eb9 --- /dev/null +++ b/src/OpenSHC/Synchrony/Actions/RemovePositionOfPlayer.cpp @@ -0,0 +1,19 @@ +#include "OpenSHC/Synchrony/Actions.func.hpp" + +#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" + +namespace OpenSHC { +namespace Synchrony { + + // FUNCTION: STRONGHOLDCRUSADER 0x004285C0 + void Actions::RemovePositionOfPlayer(int playerID) + { + for (int _position = 0; _position < 8; _position++) { + if ((char)DAT_GameSynchronyState::instance.playerPositionsArray[_position] + 1 == playerID) { + DAT_GameSynchronyState::instance.playerPositionsArray[_position] = 0xf6; + } + } + } + +} +} diff --git a/src/OpenSHC/Synchrony/Actions/SetBuildingProductionType.cpp b/src/OpenSHC/Synchrony/Actions/SetBuildingProductionType.cpp new file mode 100644 index 000000000..2f336b408 --- /dev/null +++ b/src/OpenSHC/Synchrony/Actions/SetBuildingProductionType.cpp @@ -0,0 +1,18 @@ +#include "OpenSHC/Synchrony/Actions.func.hpp" + +#include "OpenSHC/Globals/DAT_BuildingsState.hpp" + +namespace OpenSHC { +namespace Synchrony { + + // FUNCTION: STRONGHOLDCRUSADER 0x004652A0 + void Actions::SetBuildingProductionType( + undefined4 playerID, int buildingID, ushort producedItemType, int buildingUID) + { + if (DAT_BuildingsState::instance.buildings[buildingID].uid == buildingUID) { + DAT_BuildingsState::instance.buildings[buildingID].producedItemType = producedItemType; + } + } + +} +} diff --git a/src/OpenSHC/Synchrony/Commands/QueueChangeGameIntensityOrBalance.cpp b/src/OpenSHC/Synchrony/Commands/QueueChangeGameIntensityOrBalance.cpp new file mode 100644 index 000000000..b7a006091 --- /dev/null +++ b/src/OpenSHC/Synchrony/Commands/QueueChangeGameIntensityOrBalance.cpp @@ -0,0 +1,22 @@ +#include "OpenSHC/Synchrony/Commands.func.hpp" +#include "OpenSHC/Synchrony/GameSynchronyState.func.hpp" +#include "OpenSHC/Commands/GameCommandType.hpp" + +#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" + +namespace OpenSHC { +namespace Synchrony { + + using OpenSHC::Commands::GameCommandType; + + // FUNCTION: STRONGHOLDCRUSADER 0x00429630 + void Commands::QueueChangeGameIntensityOrBalance() + { + MACRO_CALL_MEMBER(OpenSHC::Synchrony::GameSynchronyState_Func::queueCommand, DAT_GameSynchronyState::ptr)( + OpenSHC::Commands::GCT_CHANGE_GAME_INTENSITY_OR_BALANCE); + DAT_GameSynchronyState::instance.field235_0x1072e8 = -1; + DAT_GameSynchronyState::instance.field236_0x1072ec = -1; + } + +} +} diff --git a/src/OpenSHC/Synchrony/Commands/_REMOVED_COMMAND1_.cpp b/src/OpenSHC/Synchrony/Commands/_REMOVED_COMMAND1_.cpp new file mode 100644 index 000000000..3336d85aa --- /dev/null +++ b/src/OpenSHC/Synchrony/Commands/_REMOVED_COMMAND1_.cpp @@ -0,0 +1,12 @@ +#include "OpenSHC/Synchrony/Commands.func.hpp" + +#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" + +namespace OpenSHC { +namespace Synchrony { + + // FUNCTION: STRONGHOLDCRUSADER 0x00482280 + void Commands::_REMOVED_COMMAND1_() { DAT_GameSynchronyState::instance.DAT_CommandSize = 0; } + +} +} diff --git a/src/OpenSHC/Synchrony/GameSynchronyState/clearGameCommandEntry.cpp b/src/OpenSHC/Synchrony/GameSynchronyState/clearGameCommandEntry.cpp new file mode 100644 index 000000000..779e44e04 --- /dev/null +++ b/src/OpenSHC/Synchrony/GameSynchronyState/clearGameCommandEntry.cpp @@ -0,0 +1,19 @@ +#include "OpenSHC/IO/LowLevelMemory.func.hpp" +#include "OpenSHC/Synchrony/GameSynchronyState.func.hpp" + +#include "OpenSHC/Globals/DAT_LowLevelMemory.hpp" + +namespace OpenSHC { +namespace Synchrony { + + // FUNCTION: STRONGHOLDCRUSADER 0x004800B0 + void GameSynchronyState::clearGameCommandEntry(int gameCommandID) + { + if (gameCommandID < 200) { + MACRO_CALL_MEMBER(OpenSHC::IO::LowLevelMemory_Func::fillMemory_ByteValue, DAT_LowLevelMemory::ptr)( + 0x4f8, '\0', (void*)((int)(this->DAT_GameCommandArray + gameCommandID))); + } + } + +} +} diff --git a/src/OpenSHC/Synchrony/GameSynchronyState/compressOrCreateLengthPrefixedPacketUnk.cpp b/src/OpenSHC/Synchrony/GameSynchronyState/compressOrCreateLengthPrefixedPacketUnk.cpp new file mode 100644 index 000000000..8c5d4c488 --- /dev/null +++ b/src/OpenSHC/Synchrony/GameSynchronyState/compressOrCreateLengthPrefixedPacketUnk.cpp @@ -0,0 +1,19 @@ +#include "OpenSHC/IO/DecoderState.func.hpp" +#include "OpenSHC/Synchrony/GameSynchronyState.func.hpp" + +#include "OpenSHC/Globals/DAT_DecoderState.hpp" + +namespace OpenSHC { +namespace Synchrony { + + // FUNCTION: STRONGHOLDCRUSADER 0x0047E7E0 + int GameSynchronyState::compressOrCreateLengthPrefixedPacketUnk(int size, char* src, void* dst) + { + int iVar1; + + iVar1 = MACRO_CALL_MEMBER(OpenSHC::IO::DecoderState_Func::compressRLE, DAT_DecoderState::ptr)(src, dst, size); + return iVar1; + } + +} +} diff --git a/src/OpenSHC/Synchrony/GameSynchronyState/computeSomeHashOnUnitArray.cpp b/src/OpenSHC/Synchrony/GameSynchronyState/computeSomeHashOnUnitArray.cpp new file mode 100644 index 000000000..30e1c1b4b --- /dev/null +++ b/src/OpenSHC/Synchrony/GameSynchronyState/computeSomeHashOnUnitArray.cpp @@ -0,0 +1,18 @@ +#include "OpenSHC/Map/Navigation/DirectionAlgorithmState.func.hpp" +#include "OpenSHC/Synchrony/GameSynchronyState.func.hpp" + +#include "OpenSHC/Globals/DAT_DirectionAlgorithmState.hpp" +#include "OpenSHC/Globals/DAT_UnitsState.hpp" + +namespace OpenSHC { +namespace Synchrony { + + // FUNCTION: STRONGHOLDCRUSADER 0x0047EEB0 + int GameSynchronyState::computeSomeHashOnUnitArray() + { + return MACRO_CALL_MEMBER(OpenSHC::Map::Navigation::DirectionAlgorithmState_Func::computeHash, + DAT_DirectionAlgorithmState::ptr)(2920000, (int*)((int)(DAT_UnitsState::instance.units))); + } + +} +} diff --git a/src/OpenSHC/Synchrony/GameSynchronyState/decompressTooLongPacketData.cpp b/src/OpenSHC/Synchrony/GameSynchronyState/decompressTooLongPacketData.cpp new file mode 100644 index 000000000..ae3c59f29 --- /dev/null +++ b/src/OpenSHC/Synchrony/GameSynchronyState/decompressTooLongPacketData.cpp @@ -0,0 +1,21 @@ +#include "OpenSHC/IO/DecoderState.func.hpp" +#include "OpenSHC/IO/LowLevelMemory.func.hpp" +#include "OpenSHC/Synchrony/GameSynchronyState.func.hpp" + +#include "OpenSHC/Globals/DAT_DecoderState.hpp" +#include "OpenSHC/Globals/DAT_LowLevelMemory.hpp" + +namespace OpenSHC { +namespace Synchrony { + + // FUNCTION: STRONGHOLDCRUSADER 0x0047E800 + void GameSynchronyState::decompressTooLongPacketData(byte* source, byte* destination) + { + size_t _size = MACRO_CALL_MEMBER(OpenSHC::IO::DecoderState_Func::decompressRLE, DAT_DecoderState::ptr)( + (char*)source, (char*)((int)(this->DAT_PacketDecodingDestination))); + MACRO_CALL_MEMBER(OpenSHC::IO::LowLevelMemory_Func::copyData, DAT_LowLevelMemory::ptr)( + _size, (void*)((int)(this->DAT_PacketDecodingDestination)), destination); + } + +} +} diff --git a/src/OpenSHC/Synchrony/GameSynchronyState/getGameCommandArrayIndex.cpp b/src/OpenSHC/Synchrony/GameSynchronyState/getGameCommandArrayIndex.cpp new file mode 100644 index 000000000..fb01abc83 --- /dev/null +++ b/src/OpenSHC/Synchrony/GameSynchronyState/getGameCommandArrayIndex.cpp @@ -0,0 +1,10 @@ +#include "OpenSHC/Synchrony/GameSynchronyState.func.hpp" + +namespace OpenSHC { +namespace Synchrony { + + // FUNCTION: STRONGHOLDCRUSADER 0x00480570 + undefined4 GameSynchronyState::getGameCommandArrayIndex() { return this->DAT_GameCommandArrayIndex; } + +} +} diff --git a/src/OpenSHC/Synchrony/GameSynchronyState/isAIPlayer.cpp b/src/OpenSHC/Synchrony/GameSynchronyState/isAIPlayer.cpp new file mode 100644 index 000000000..6c6f8ec95 --- /dev/null +++ b/src/OpenSHC/Synchrony/GameSynchronyState/isAIPlayer.cpp @@ -0,0 +1,20 @@ +#include "../GameSynchronyState.func.hpp" + +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +namespace OpenSHC { +namespace Synchrony { + + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x004010B0 + BOOLEnum GameSynchronyState::isAIPlayer(int playerID) + { + if (this->currentPlayerFullIDArray[playerID] != -1) { + return FALSE; + } + return this->currentAIArray[playerID] != 0; + } + +} +} diff --git a/src/OpenSHC/Synchrony/GameSynchronyState/throttledMultiplayerSyncUpdate.cpp b/src/OpenSHC/Synchrony/GameSynchronyState/throttledMultiplayerSyncUpdate.cpp new file mode 100644 index 000000000..83e765395 --- /dev/null +++ b/src/OpenSHC/Synchrony/GameSynchronyState/throttledMultiplayerSyncUpdate.cpp @@ -0,0 +1,23 @@ +#include "OpenSHC/Synchrony/GameSynchronyState.func.hpp" +#include "OpenSHC/Game/GameMode.hpp" + +namespace OpenSHC { +namespace Synchrony { + + using OpenSHC::Game::GameMode; + + // FUNCTION: STRONGHOLDCRUSADER 0x00490340 + void GameSynchronyState::throttledMultiplayerSyncUpdate() + { + if ((this->currentGameMode != OpenSHC::Game::GM_SOLITARY) + && (this->currentGameMode != OpenSHC::Game::GM_SKIRMISH_SINGLE_PLAYER)) { + DWORD _now = timeGetTime(); + if (10 < _now - this->field309_0x109e94) { + this->field309_0x109e94 = _now; + MACRO_CALL_MEMBER(OpenSHC::Synchrony::GameSynchronyState_Func::sendPeriodicSyncMessages, this)(); + } + } + } + +} +} diff --git a/src/OpenSHC/Synchrony/GetPlayerPosition.cpp b/src/OpenSHC/Synchrony/GetPlayerPosition.cpp new file mode 100644 index 000000000..3036cbf47 --- /dev/null +++ b/src/OpenSHC/Synchrony/GetPlayerPosition.cpp @@ -0,0 +1,18 @@ +#include "OpenSHC/Synchrony.func.hpp" + +#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" + +namespace OpenSHC { + +// FUNCTION: STRONGHOLDCRUSADER 0x0042AC60 +int Synchrony::GetPlayerPosition(int playerID) +{ + for (int _position = 0; _position < 8; _position++) { + if (DAT_GameSynchronyState::instance.playerPositionsArray[_position] + 1 == playerID) { + return _position + 1; + } + } + return 0; +} + +} diff --git a/src/OpenSHC/Synchrony/ProgressBarRelated.cpp b/src/OpenSHC/Synchrony/ProgressBarRelated.cpp new file mode 100644 index 000000000..854198c8b --- /dev/null +++ b/src/OpenSHC/Synchrony/ProgressBarRelated.cpp @@ -0,0 +1,22 @@ +#include "OpenSHC/Synchrony.func.hpp" +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuModalComposition.func.hpp" +#include "OpenSHC/UI/Enums/MenuModalType.hpp" + +#include "OpenSHC/Globals/DAT_MenuModalComposition1.hpp" +#include "OpenSHC/Globals/DAT_MenuTextInputState.hpp" + +namespace OpenSHC { + +using OpenSHC::UI::Enums::MenuModalType; + +// FUNCTION: STRONGHOLDCRUSADER 0x00495840 +void Synchrony::ProgressBarRelated() +{ + DAT_MenuTextInputState::instance.DAT_MenuOptionsActionParameter = 0x1f; + MACRO_CALL_MEMBER(OpenSHC::UI::MenuModalComposition_Func::activateModalDialog2, DAT_MenuModalComposition1::ptr)( + OpenSHC::UI::Enums::MMT_PROGRESS_BAR_BOX); + MACRO_CALL(OpenSHC::UI_Func::MenuItemActionHandler_ProgressBarBox_LoadAndSaveGameButtonLogic)(0); +} + +} diff --git a/src/OpenSHC/UI/ActivateGameSpeedAndResourceLackDisplayElementUnk.cpp b/src/OpenSHC/UI/ActivateGameSpeedAndResourceLackDisplayElementUnk.cpp new file mode 100644 index 000000000..a6811fe19 --- /dev/null +++ b/src/OpenSHC/UI/ActivateGameSpeedAndResourceLackDisplayElementUnk.cpp @@ -0,0 +1,23 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/DisplayElement.hpp" +#include "OpenSHC/UI/Enums/DisplayElementID.hpp" + +namespace OpenSHC { + +using OpenSHC::UI::DisplayElement; +using OpenSHC::UI::Enums::DisplayElementID; + +// FUNCTION: STRONGHOLDCRUSADER 0x004AF680 +void UI::ActivateGameSpeedAndResourceLackDisplayElementUnk( + DisplayElementID elementId, dword elementState, int displayDuration) +{ + DisplayElement* _displayElementPtr = MACRO_CALL(OpenSHC::UI_Func::FindDisplayElementWithID)(elementId); + if (_displayElementPtr != (DisplayElement*)0x0) { + _displayElementPtr->elementStateUnk_0xc = elementState; + _displayElementPtr->displayDuration_0x14 = displayDuration; + DWORD _currentTime = timeGetTime(); + _displayElementPtr->activationTime_0x10 = _currentTime; + } +} + +} diff --git a/src/OpenSHC/UI/AppendCreditsClearImageCommand.cpp b/src/OpenSHC/UI/AppendCreditsClearImageCommand.cpp new file mode 100644 index 000000000..bd00fb811 --- /dev/null +++ b/src/OpenSHC/UI/AppendCreditsClearImageCommand.cpp @@ -0,0 +1,17 @@ +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_ARRAY_00eb9b68.hpp" +#include "OpenSHC/Globals/DAT_UnknownBinkCount.hpp" + +namespace OpenSHC { + +// FUNCTION: STRONGHOLDCRUSADER 0x004DA8A0 +void UI::AppendCreditsClearImageCommand() +{ + if (DAT_UnknownBinkCount::instance < 0x120) { + DAT_ARRAY_00eb9b68::instance[DAT_UnknownBinkCount::instance].field0_0x0 = 0x28; + DAT_UnknownBinkCount::instance = DAT_UnknownBinkCount::instance + 1; + } +} + +} diff --git a/src/OpenSHC/UI/AppendCreditsCommand.cpp b/src/OpenSHC/UI/AppendCreditsCommand.cpp new file mode 100644 index 000000000..10b42b8d5 --- /dev/null +++ b/src/OpenSHC/UI/AppendCreditsCommand.cpp @@ -0,0 +1,17 @@ +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_ARRAY_00eb9b68.hpp" +#include "OpenSHC/Globals/DAT_UnknownBinkCount.hpp" + +namespace OpenSHC { + +// FUNCTION: STRONGHOLDCRUSADER 0x004DA7E0 +void UI::AppendCreditsCommand(int param_1) +{ + if (DAT_UnknownBinkCount::instance < 0x120) { + DAT_ARRAY_00eb9b68::instance[DAT_UnknownBinkCount::instance].field0_0x0 = param_1; + DAT_UnknownBinkCount::instance = DAT_UnknownBinkCount::instance + 1; + } +} + +} diff --git a/src/OpenSHC/UI/AppendCreditsListTerminator.cpp b/src/OpenSHC/UI/AppendCreditsListTerminator.cpp new file mode 100644 index 000000000..9195364ac --- /dev/null +++ b/src/OpenSHC/UI/AppendCreditsListTerminator.cpp @@ -0,0 +1,17 @@ +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_ARRAY_00eb9b68.hpp" +#include "OpenSHC/Globals/DAT_UnknownBinkCount.hpp" + +namespace OpenSHC { + +// FUNCTION: STRONGHOLDCRUSADER 0x004DA810 +void UI::AppendCreditsListTerminator() +{ + if (DAT_UnknownBinkCount::instance < 288) { + DAT_ARRAY_00eb9b68::instance[DAT_UnknownBinkCount::instance].field0_0x0 = 0x20; + DAT_UnknownBinkCount::instance = DAT_UnknownBinkCount::instance + 1; + } +} + +} diff --git a/src/OpenSHC/UI/AppendCreditsPauseCommand.cpp b/src/OpenSHC/UI/AppendCreditsPauseCommand.cpp new file mode 100644 index 000000000..b4a0d4f77 --- /dev/null +++ b/src/OpenSHC/UI/AppendCreditsPauseCommand.cpp @@ -0,0 +1,17 @@ +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_ARRAY_00eb9b68.hpp" +#include "OpenSHC/Globals/DAT_UnknownBinkCount.hpp" + +namespace OpenSHC { + +// FUNCTION: STRONGHOLDCRUSADER 0x004DA840 +void UI::AppendCreditsPauseCommand() +{ + if (DAT_UnknownBinkCount::instance < 0x120) { + DAT_ARRAY_00eb9b68::instance[DAT_UnknownBinkCount::instance].field0_0x0 = 0x1c; + DAT_UnknownBinkCount::instance = DAT_UnknownBinkCount::instance + 1; + } +} + +} diff --git a/src/OpenSHC/UI/AppendCreditsSegmentEndCommand.cpp b/src/OpenSHC/UI/AppendCreditsSegmentEndCommand.cpp new file mode 100644 index 000000000..f2ab38e27 --- /dev/null +++ b/src/OpenSHC/UI/AppendCreditsSegmentEndCommand.cpp @@ -0,0 +1,17 @@ +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_ARRAY_00eb9b68.hpp" +#include "OpenSHC/Globals/DAT_UnknownBinkCount.hpp" + +namespace OpenSHC { + +// FUNCTION: STRONGHOLDCRUSADER 0x004DA870 +void UI::AppendCreditsSegmentEndCommand() +{ + if (DAT_UnknownBinkCount::instance < 0x120) { + DAT_ARRAY_00eb9b68::instance[DAT_UnknownBinkCount::instance].field0_0x0 = 0x1f; + DAT_UnknownBinkCount::instance = DAT_UnknownBinkCount::instance + 1; + } +} + +} diff --git a/src/OpenSHC/UI/AppendCreditsSoundStreamCommand.cpp b/src/OpenSHC/UI/AppendCreditsSoundStreamCommand.cpp new file mode 100644 index 000000000..3b72f33f5 --- /dev/null +++ b/src/OpenSHC/UI/AppendCreditsSoundStreamCommand.cpp @@ -0,0 +1,21 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/Audio/MSS/enums/SHC_SoundStream.hpp" + +#include "OpenSHC/Globals/DAT_ARRAY_00eb9b68.hpp" +#include "OpenSHC/Globals/DAT_UnknownBinkCount.hpp" + +namespace OpenSHC { + +using OpenSHC::Audio::MSS::enums::SHC_SoundStream; + +// FUNCTION: STRONGHOLDCRUSADER 0x004DABF0 +void UI::AppendCreditsSoundStreamCommand(int param_1, SHC_SoundStream param_2) +{ + if (DAT_UnknownBinkCount::instance < 0x120) { + DAT_ARRAY_00eb9b68::instance[DAT_UnknownBinkCount::instance].field0_0x0 = param_1; + DAT_ARRAY_00eb9b68::instance[DAT_UnknownBinkCount::instance].soundStream = param_2; + DAT_UnknownBinkCount::instance = DAT_UnknownBinkCount::instance + 1; + } +} + +} diff --git a/src/OpenSHC/UI/CaptureCurrentTimeToUnknownTime01.cpp b/src/OpenSHC/UI/CaptureCurrentTimeToUnknownTime01.cpp new file mode 100644 index 000000000..2dec9bbaf --- /dev/null +++ b/src/OpenSHC/UI/CaptureCurrentTimeToUnknownTime01.cpp @@ -0,0 +1,10 @@ +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_UnknownTime_01.hpp" + +namespace OpenSHC { + +// FUNCTION: STRONGHOLDCRUSADER 0x004B9610 +void UI::CaptureCurrentTimeToUnknownTime01() { DAT_UnknownTime_01::instance = timeGetTime(); } + +} diff --git a/src/OpenSHC/UI/DisableMercPostPortraits.cpp b/src/OpenSHC/UI/DisableMercPostPortraits.cpp new file mode 100644 index 000000000..a29b61696 --- /dev/null +++ b/src/OpenSHC/UI/DisableMercPostPortraits.cpp @@ -0,0 +1,10 @@ +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_DisableMercPostPortraits.hpp" + +namespace OpenSHC { + +// FUNCTION: STRONGHOLDCRUSADER 0x00466E10 +void UI::DisableMercPostPortraits() { DAT_DisableMercPostPortraits::instance = 1; } + +} diff --git a/src/OpenSHC/UI/FindDisplayElementWithID.cpp b/src/OpenSHC/UI/FindDisplayElementWithID.cpp new file mode 100644 index 000000000..371514232 --- /dev/null +++ b/src/OpenSHC/UI/FindDisplayElementWithID.cpp @@ -0,0 +1,22 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/DisplayElement.hpp" + +#include "OpenSHC/Globals/DAT_PointerToDisplayElementStackTop.hpp" + +namespace OpenSHC { + +using OpenSHC::UI::DisplayElement; + +// FUNCTION: STRONGHOLDCRUSADER 0x004AF630 +DisplayElement* UI::FindDisplayElementWithID(int elementID) +{ + DisplayElement* _pCurrent = DAT_PointerToDisplayElementStackTop::instance; + while (_pCurrent != NULL) { + if (_pCurrent->elementID_0x8 == elementID) + return _pCurrent; + _pCurrent = _pCurrent->nextDisplayElement_0x20; + } + return NULL; +} + +} diff --git a/src/OpenSHC/UI/GreatestLord/IfAiGreatestLordGetAiType.cpp b/src/OpenSHC/UI/GreatestLord/IfAiGreatestLordGetAiType.cpp new file mode 100644 index 000000000..0605a8412 --- /dev/null +++ b/src/OpenSHC/UI/GreatestLord/IfAiGreatestLordGetAiType.cpp @@ -0,0 +1,24 @@ +#include "OpenSHC/UI/GreatestLord.func.hpp" +#include "OpenSHC/AI/AIType.hpp" + +#include "OpenSHC/Globals/DAT_GameState.hpp" +#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" + +namespace OpenSHC { +namespace UI { + + using OpenSHC::AI::AIType; + + // FUNCTION: STRONGHOLDCRUSADER 0x0044B7D0 + int GreatestLord::IfAiGreatestLordGetAiType() + { + int _highestRankingPlayer = MACRO_CALL(OpenSHC::UI::GreatestLord_Func::GetPlayerAtRank)(0); + if ((_highestRankingPlayer != 0) + && (DAT_GameSynchronyState::instance.currentAIArray[_highestRankingPlayer] != 0)) { + return DAT_GameState::instance.playerDataArray[_highestRankingPlayer].aiType - 1; + } + return 0; + } + +} +} diff --git a/src/OpenSHC/UI/Helpers/AModalDialogIsActiveButIsNotQuitting.cpp b/src/OpenSHC/UI/Helpers/AModalDialogIsActiveButIsNotQuitting.cpp new file mode 100644 index 000000000..ea6078cca --- /dev/null +++ b/src/OpenSHC/UI/Helpers/AModalDialogIsActiveButIsNotQuitting.cpp @@ -0,0 +1,28 @@ +#include "OpenSHC/UI/Helpers.func.hpp" +#include "OpenSHC/UI/Enums/MenuModalType.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +#include "OpenSHC/Globals/DAT_MenuModalComposition1.hpp" + +namespace OpenSHC { +namespace UI { + + using OpenSHC::UI::Enums::MenuModalType; + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x00427210 + BOOLEnum Helpers::AModalDialogIsActiveButIsNotQuitting() + { + if ((((DAT_MenuModalComposition1::instance.activeModalDialogID != OpenSHC::UI::Enums::MMT_NONE) + && (DAT_MenuModalComposition1::instance.activeModalDialogID + != OpenSHC::UI::Enums::MMT_BASIC_AI_LORD_SELECT)) + && (DAT_MenuModalComposition1::instance.activeModalDialogID + != OpenSHC::UI::Enums::MMT_EXTENDED_AI_LORD_SELECT)) + && (DAT_MenuModalComposition1::instance.activeModalDialogID != OpenSHC::UI::Enums::MMT_ROUNDTABLE)) { + return TRUE; + } + return FALSE; + } + +} +} diff --git a/src/OpenSHC/UI/Helpers/CheckDisplayElementByIDAndSetForUnlimitedDisplay.cpp b/src/OpenSHC/UI/Helpers/CheckDisplayElementByIDAndSetForUnlimitedDisplay.cpp new file mode 100644 index 000000000..ec8e1b5f4 --- /dev/null +++ b/src/OpenSHC/UI/Helpers/CheckDisplayElementByIDAndSetForUnlimitedDisplay.cpp @@ -0,0 +1,31 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Helpers.func.hpp" +#include "OpenSHC/UI/DisplayElement.hpp" +#include "OpenSHC/UI/Enums/DisplayElementID.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +#include "OpenSHC/Globals/BOOL_RelatedToInitialGranaryAndKeepPlacement.hpp" + +namespace OpenSHC { +namespace UI { + + using OpenSHC::UI::DisplayElement; + using OpenSHC::UI::Enums::DisplayElementID; + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x004AF650 + void Helpers::CheckDisplayElementByIDAndSetForUnlimitedDisplay( + DisplayElementID displayElementID, dword elementState) + { + DisplayElement* _displayElementPtr = MACRO_CALL(OpenSHC::UI_Func::FindDisplayElementWithID)(displayElementID); + if (_displayElementPtr != NULL) { + if (_displayElementPtr->elementStateUnk_0xc != elementState) { + BOOL_RelatedToInitialGranaryAndKeepPlacement::instance = FALSE; + } + _displayElementPtr->elementStateUnk_0xc = elementState; + _displayElementPtr->displayDuration_0x14 = -1; + } + } + +} +} diff --git a/src/OpenSHC/UI/Helpers/CheckGoldResource.cpp b/src/OpenSHC/UI/Helpers/CheckGoldResource.cpp new file mode 100644 index 000000000..1be7983c6 --- /dev/null +++ b/src/OpenSHC/UI/Helpers/CheckGoldResource.cpp @@ -0,0 +1,27 @@ +#include "OpenSHC/UI/Helpers.func.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +#include "OpenSHC/Globals/DAT_GameState.hpp" +#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" + +namespace OpenSHC { +namespace UI { + + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x004650C0 + BOOLEnum Helpers::CheckGoldResource(int param_1) + { + int iVar1; + + iVar1 = 0; + if (param_1 == 5) { + iVar1 = 0x1e; + } + return DAT_GameState::instance.playerDataArray[DAT_GameSynchronyState::instance.currentPlayerSlotID] + .currentResources[0xf] + >= iVar1; + } + +} +} diff --git a/src/OpenSHC/UI/Helpers/CheckIfEnoughGoldForLadderman.cpp b/src/OpenSHC/UI/Helpers/CheckIfEnoughGoldForLadderman.cpp new file mode 100644 index 000000000..a2b554a78 --- /dev/null +++ b/src/OpenSHC/UI/Helpers/CheckIfEnoughGoldForLadderman.cpp @@ -0,0 +1,19 @@ +#include "OpenSHC/UI/Helpers.func.hpp" + +#include "OpenSHC/Globals/DAT_EnoughGoldForRequestedUnit.hpp" +#include "OpenSHC/Globals/DAT_GameState.hpp" +#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" + +namespace OpenSHC { +namespace UI { + + // FUNCTION: STRONGHOLDCRUSADER 0x00465080 + void Helpers::CheckIfEnoughGoldForLadderman() + { + DAT_EnoughGoldForRequestedUnit::instance + = 4 <= DAT_GameState::instance.playerDataArray[DAT_GameSynchronyState::instance.currentPlayerSlotID] + .currentResources[0xf]; + } + +} +} diff --git a/src/OpenSHC/UI/Helpers/CheckIfEnoughGoldForMonk.cpp b/src/OpenSHC/UI/Helpers/CheckIfEnoughGoldForMonk.cpp new file mode 100644 index 000000000..af06a6304 --- /dev/null +++ b/src/OpenSHC/UI/Helpers/CheckIfEnoughGoldForMonk.cpp @@ -0,0 +1,19 @@ +#include "OpenSHC/UI/Helpers.func.hpp" + +#include "OpenSHC/Globals/DAT_EnoughGoldForRequestedUnit.hpp" +#include "OpenSHC/Globals/DAT_GameState.hpp" +#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" + +namespace OpenSHC { +namespace UI { + + // FUNCTION: STRONGHOLDCRUSADER 0x004650A0 + void Helpers::CheckIfEnoughGoldForMonk() + { + DAT_EnoughGoldForRequestedUnit::instance + = 10 <= DAT_GameState::instance.playerDataArray[DAT_GameSynchronyState::instance.currentPlayerSlotID] + .currentResources[0xf]; + } + +} +} diff --git a/src/OpenSHC/UI/Helpers/CheckIfEnoughGoldForTunneler.cpp b/src/OpenSHC/UI/Helpers/CheckIfEnoughGoldForTunneler.cpp new file mode 100644 index 000000000..6de671647 --- /dev/null +++ b/src/OpenSHC/UI/Helpers/CheckIfEnoughGoldForTunneler.cpp @@ -0,0 +1,19 @@ +#include "OpenSHC/UI/Helpers.func.hpp" + +#include "OpenSHC/Globals/DAT_EnoughGoldForRequestedUnit.hpp" +#include "OpenSHC/Globals/DAT_GameState.hpp" +#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" + +namespace OpenSHC { +namespace UI { + + // FUNCTION: STRONGHOLDCRUSADER 0x004650F0 + void Helpers::CheckIfEnoughGoldForTunneler() + { + DAT_EnoughGoldForRequestedUnit::instance + = 0x1e <= DAT_GameState::instance.playerDataArray[DAT_GameSynchronyState::instance.currentPlayerSlotID] + .currentResources[0xf]; + } + +} +} diff --git a/src/OpenSHC/UI/Helpers/GetIfDisplayElementStateNotZero.cpp b/src/OpenSHC/UI/Helpers/GetIfDisplayElementStateNotZero.cpp new file mode 100644 index 000000000..0430c33d4 --- /dev/null +++ b/src/OpenSHC/UI/Helpers/GetIfDisplayElementStateNotZero.cpp @@ -0,0 +1,25 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Helpers.func.hpp" +#include "OpenSHC/UI/DisplayElement.hpp" +#include "OpenSHC/UI/Enums/DisplayElementID.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +namespace OpenSHC { +namespace UI { + + using OpenSHC::UI::DisplayElement; + using OpenSHC::UI::Enums::DisplayElementID; + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x004AF6E0 + BOOLEnum Helpers::GetIfDisplayElementStateNotZero(DisplayElementID displayElementID) + { + DisplayElement* _displayElementPtr = MACRO_CALL(OpenSHC::UI_Func::FindDisplayElementWithID)(displayElementID); + if (_displayElementPtr != NULL) { + return _displayElementPtr->elementStateUnk_0xc != 0; + } + return FALSE; + } + +} +} diff --git a/src/OpenSHC/UI/Helpers/SetEnoughGoldForRequestedUnitToTrueUnk.cpp b/src/OpenSHC/UI/Helpers/SetEnoughGoldForRequestedUnitToTrueUnk.cpp new file mode 100644 index 000000000..22b974ab8 --- /dev/null +++ b/src/OpenSHC/UI/Helpers/SetEnoughGoldForRequestedUnitToTrueUnk.cpp @@ -0,0 +1,15 @@ +#include "OpenSHC/UI/Helpers.func.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +#include "OpenSHC/Globals/DAT_EnoughGoldForRequestedUnit.hpp" + +namespace OpenSHC { +namespace UI { + + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x00466E00 + void Helpers::SetEnoughGoldForRequestedUnitToTrueUnk() { DAT_EnoughGoldForRequestedUnit::instance = TRUE; } + +} +} diff --git a/src/OpenSHC/UI/Helpers/SetTaxesSetting_unknown.cpp b/src/OpenSHC/UI/Helpers/SetTaxesSetting_unknown.cpp new file mode 100644 index 000000000..7a510db61 --- /dev/null +++ b/src/OpenSHC/UI/Helpers/SetTaxesSetting_unknown.cpp @@ -0,0 +1,23 @@ +#include "OpenSHC/UI/Helpers.func.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +#include "OpenSHC/Globals/DAT_GameCore.hpp" + +namespace OpenSHC { +namespace UI { + + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x00433560 + void Helpers::SetTaxesSetting_unknown(int taxesSettingUnk) + { + if (DAT_GameCore::instance.taxesSettingUnk == 0) { + DAT_GameCore::instance.taxesSettingUnk = taxesSettingUnk; + DAT_GameCore::instance.unknownScribeRelatedFlag_0x130 = TRUE; + DAT_GameCore::instance.taxestimeUnk = timeGetTime(); + DAT_GameCore::instance.scribeAnimationFrame2 = 0; + } + } + +} +} diff --git a/src/OpenSHC/UI/Helpers/SetTutorialBuildingActionState.cpp b/src/OpenSHC/UI/Helpers/SetTutorialBuildingActionState.cpp new file mode 100644 index 000000000..bc9ef78d6 --- /dev/null +++ b/src/OpenSHC/UI/Helpers/SetTutorialBuildingActionState.cpp @@ -0,0 +1,31 @@ +#include "OpenSHC/UI/Helpers.func.hpp" +#include "OpenSHC/Map/Buildings/BuildingType.hpp" + +#include "OpenSHC/Globals/DAT_00df5588.hpp" +#include "OpenSHC/Globals/DAT_00df558c.hpp" + +namespace OpenSHC { +namespace UI { + + using OpenSHC::Map::Buildings::BuildingType; + + /* + Sets DAT_00df5588 (tutorial action type) and DAT_00df558c (building type) unless param_1 is 0xb + and DAT_00df5588 is already 7 — in which case the update is skipped to avoid overwriting a + pending state. Used to record which building-related action the player last performed for + tutorial step evaluation. + + renamed by: Claude Sonnet 4.6 + */ + + // FUNCTION: STRONGHOLDCRUSADER 0x004BC690 + void Helpers::SetTutorialBuildingActionState(int param_1, BuildingType buildingType) + { + if ((param_1 != 0xb) || (DAT_00df5588::instance != 7)) { + DAT_00df5588::instance = param_1; + DAT_00df558c::instance = buildingType; + } + } + +} +} diff --git a/src/OpenSHC/UI/Helpers/SumUnitPoints.cpp b/src/OpenSHC/UI/Helpers/SumUnitPoints.cpp new file mode 100644 index 000000000..3dfb06823 --- /dev/null +++ b/src/OpenSHC/UI/Helpers/SumUnitPoints.cpp @@ -0,0 +1,16 @@ +#include "OpenSHC/Map/MapPropertiesState.func.hpp" +#include "OpenSHC/UI/Helpers.func.hpp" + +#include "OpenSHC/Globals/DAT_MapPropertiesState.hpp" + +namespace OpenSHC { +namespace UI { + + // FUNCTION: STRONGHOLDCRUSADER 0x004B8200 + void Helpers::SumUnitPoints() + { + MACRO_CALL_MEMBER(OpenSHC::Map::MapPropertiesState_Func::sumUnitPoints, DAT_MapPropertiesState::ptr)(); + } + +} +} diff --git a/src/OpenSHC/UI/HoveredState/clearHoveredState.cpp b/src/OpenSHC/UI/HoveredState/clearHoveredState.cpp new file mode 100644 index 000000000..b9664fc12 --- /dev/null +++ b/src/OpenSHC/UI/HoveredState/clearHoveredState.cpp @@ -0,0 +1,20 @@ +#include "OpenSHC/UI/HoveredState.func.hpp" +#include "OpenSHC/Commands/MappersEnum.hpp" +#include "OpenSHC/Commands/MappersEnumInt.hpp" + +namespace OpenSHC { +namespace UI { + + using OpenSHC::Commands::MappersEnum; + using OpenSHC::Commands::MappersEnumInt; + + // FUNCTION: STRONGHOLDCRUSADER 0x005010C0 + void HoveredState::clearHoveredState() + { + for (int i = 0; i < 20; i++) { + this->elements[i].type = OpenSHC::Commands::M_MAPPER_NULL; + } + } + +} +} diff --git a/src/OpenSHC/UI/HoveredState/clearInvalidatedHoverStates.cpp b/src/OpenSHC/UI/HoveredState/clearInvalidatedHoverStates.cpp new file mode 100644 index 000000000..f36113fa0 --- /dev/null +++ b/src/OpenSHC/UI/HoveredState/clearInvalidatedHoverStates.cpp @@ -0,0 +1,37 @@ +#include "OpenSHC/UI/HoveredState.func.hpp" +#include "OpenSHC/Commands/MappersEnum.hpp" +#include "OpenSHC/Game/GameMode.hpp" +#include "OpenSHC/UI/HoveredStateElement.hpp" + +#include "OpenSHC/Globals/DAT_GameCore.hpp" +#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" + +namespace OpenSHC { +namespace UI { + + using OpenSHC::Commands::MappersEnum; + using OpenSHC::Game::GameMode; + using OpenSHC::UI::HoveredStateElement; + + // FUNCTION: STRONGHOLDCRUSADER 0x005010E0 + void HoveredState::clearInvalidatedHoverStates() + { + HoveredStateElement* _pElement; + int _index; + + if (DAT_GameSynchronyState::instance.currentGameMode != OpenSHC::Game::GM_SOLITARY) { + _pElement = &this->elements[0]; + _index = 20; + do { + if ((_pElement->type != OpenSHC::Commands::M_MAPPER_NULL) + && (_pElement->time <= (int)DAT_GameCore::instance.mapTimeInTicks)) { + _pElement->type = OpenSHC::Commands::M_MAPPER_NULL; + } + _pElement = _pElement + 6; + _index = _index + -1; + } while (_index != 0); + } + } + +} +} diff --git a/src/OpenSHC/UI/LoadTGX_shc_back.cpp b/src/OpenSHC/UI/LoadTGX_shc_back.cpp new file mode 100644 index 000000000..cbaa77415 --- /dev/null +++ b/src/OpenSHC/UI/LoadTGX_shc_back.cpp @@ -0,0 +1,15 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Rendering/TextureRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_TextureRenderCoreObject.hpp" + +namespace OpenSHC { + +// FUNCTION: STRONGHOLDCRUSADER 0x00424BD0 +void UI::LoadTGX_shc_back() +{ + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::TextureRenderCore_Func::loadGfxFile, DAT_TextureRenderCoreObject::ptr)( + "shc_back.tgx"); +} + +} diff --git a/src/OpenSHC/UI/Menu/updateMenuButtons.cpp b/src/OpenSHC/UI/Menu/updateMenuButtons.cpp new file mode 100644 index 000000000..4589756c1 --- /dev/null +++ b/src/OpenSHC/UI/Menu/updateMenuButtons.cpp @@ -0,0 +1,28 @@ +#include "OpenSHC/UI/Menu.func.hpp" +#include "OpenSHC/UI/Enums/MenuItemHandleState.hpp" +#include "OpenSHC/UI/MenuItem.hpp" + +#include "OpenSHC/Globals/DAT_MenuHandlerState.hpp" + +namespace OpenSHC { +namespace UI { + + using OpenSHC::UI::MenuItem; + using OpenSHC::UI::Enums::MenuItemHandleState; + + // FUNCTION: STRONGHOLDCRUSADER 0x004F6470 + void Menu::updateMenuButtons() + { + if (this->hoveredItem == (MenuItem*)0x0) { + this->someMenuItemPtr_0x3c = (MenuItem*)0x0; + } + this->hoveredItem = (MenuItem*)0x0; + this->field16_0x40 = 0; + DAT_MenuHandlerState::instance.field18_0x3c = 0; + MACRO_CALL_MEMBER(OpenSHC::UI::Menu_Func::handleMenuItems, this)( + OpenSHC::UI::Enums::MIHS_HANDLE_INPUT_CALLBACKSUnk); + this->one = 0; + } + +} +} diff --git a/src/OpenSHC/UI/MenuHandlerState/setupBuildMenuState.cpp b/src/OpenSHC/UI/MenuHandlerState/setupBuildMenuState.cpp new file mode 100644 index 000000000..ca2fc1b18 --- /dev/null +++ b/src/OpenSHC/UI/MenuHandlerState/setupBuildMenuState.cpp @@ -0,0 +1,20 @@ +#include "OpenSHC/UI/MenuHandlerState.func.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +namespace OpenSHC { +namespace UI { + + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x004F4C60 + void MenuHandlerState::setupBuildMenuState(dword param_1, dword param_2) + { + this->isBuildMenuTransitioning_0x18 = FALSE; + this->buildMenuBackgroundLeftShift_0x24 = 0; + this->buildMenuTransitionDirection_0x2c = -1; + this->const017 = param_1; + this->const516 = param_2; + } + +} +} diff --git a/src/OpenSHC/UI/MenuItem/resetMenuItemStateUnk.cpp b/src/OpenSHC/UI/MenuItem/resetMenuItemStateUnk.cpp new file mode 100644 index 000000000..fb5a421e3 --- /dev/null +++ b/src/OpenSHC/UI/MenuItem/resetMenuItemStateUnk.cpp @@ -0,0 +1,28 @@ +#include "OpenSHC/UI/MenuItem.func.hpp" +#include "OpenSHC/UI/Enums/MenuItemType.hpp" +#include "OpenSHC/UI/Enums/MenuItemTypeInt.hpp" + +namespace OpenSHC { +namespace UI { + + using OpenSHC::UI::Enums::MenuItemType; + using OpenSHC::UI::Enums::MenuItemTypeInt; + + // FUNCTION: STRONGHOLDCRUSADER 0x004F4C30 + void MenuItem::resetMenuItemStateUnk() + { + MenuItemTypeInt MVar1; + + this->hovering = 0; + this->clicked = 0; + (this->secondItemTypeData).buttonState.someTimestamp_1_0x0 = 0; + (this->secondItemTypeData).buttonState.clickTimestamp_0x4 = 0; + (this->secondItemTypeData).buttonState.countTo100 = 0; + MVar1 = this->menuItemType & Enums::MIT_MENU_ITEM_TYPE_ID_PARTUnk; + if ((MVar1 == OpenSHC::UI::Enums::MIT_SLIDERUnk) || (MVar1 == OpenSHC::UI::Enums::MIT_SCROLLBARUnk)) { + (this->secondItemTypeData).buttonState.currentButtonPictureInGm_0xc = -1000; + } + } + +} +} diff --git a/src/OpenSHC/UI/MenuItemFunction_General_Unknown.cpp b/src/OpenSHC/UI/MenuItemFunction_General_Unknown.cpp new file mode 100644 index 000000000..101381b38 --- /dev/null +++ b/src/OpenSHC/UI/MenuItemFunction_General_Unknown.cpp @@ -0,0 +1,10 @@ +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_StopHandlingMenuItems.hpp" + +namespace OpenSHC { + +// FUNCTION: STRONGHOLDCRUSADER 0x00440410 +void UI::MenuItemFunction_General_Unknown(int param_1, ...) { DAT_StopHandlingMenuItems::instance = 0; } + +} diff --git a/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemActionHandler_BuildMenu_SomeKeepAndGranaryCheckUnk.cpp b/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemActionHandler_BuildMenu_SomeKeepAndGranaryCheckUnk.cpp new file mode 100644 index 000000000..5edf214bc --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemActionHandler_BuildMenu_SomeKeepAndGranaryCheckUnk.cpp @@ -0,0 +1,38 @@ +#include "OpenSHC/Game/GameCore.func.hpp" +#include "OpenSHC/Game/GameStateStructures.func.hpp" +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Enums/BuildMenuTabType.hpp" +#include "OpenSHC/UI/Enums/BuildingsAndStatusMenuTabType.hpp" +#include "OpenSHC/UI/Enums/MenuViewType.hpp" + +#include "OpenSHC/Globals/DAT_GameCore.hpp" +#include "OpenSHC/Globals/DAT_GameState.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace BuildMenu { + + using OpenSHC::UI::Enums::BuildingsAndStatusMenuTabType; + using OpenSHC::UI::Enums::BuildMenuTabType; + using OpenSHC::UI::Enums::MenuViewType; + + // FUNCTION: STRONGHOLDCRUSADER 0x00433200 + void MenuItemActionHandler_BuildMenu_SomeKeepAndGranaryCheckUnk(int param_1, ...) + { + if (DAT_GameCore::instance.activeMenuTab.buildMenuTab == ((BuildMenuTabType)0x31)) { + if (0 + < MACRO_CALL_MEMBER(OpenSHC::Game::GameStateStructures_Func::singlePlayerHasKeepAndGranaryCheck, + DAT_GameState::ptr)()) { + DAT_GameCore::instance.buildmenuMenuTabToSwitchTo.tabType + = OpenSHC::UI::Enums::BASMTT_HUNTERSHUT; + MACRO_CALL_MEMBER(OpenSHC::Game::GameCore_Func::switchToMenuView, DAT_GameCore::ptr)( + OpenSHC::UI::Enums::MVT_BUILD_MENU, 0); + } + } + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_BuildingIcons.cpp b/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_BuildingIcons.cpp new file mode 100644 index 000000000..3724ec2ae --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_BuildingIcons.cpp @@ -0,0 +1,32 @@ +#include "OpenSHC/Map/MapPropertiesState.func.hpp" +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +#include "OpenSHC/Globals/DAT_ButtonUnknownZero.hpp" +#include "OpenSHC/Globals/DAT_MapPropertiesState.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace BuildMenu { + + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x004668F0 + void MenuItemRenderFunction_BuildMenu_BuildingIcons(int param_1, ...) + { + if (MACRO_CALL_MEMBER(OpenSHC::Map::MapPropertiesState_Func::isMapperAvailable, + DAT_MapPropertiesState::ptr)((MappersEnum)param_1) + != FALSE) { + MACRO_CALL(OpenSHC::UI_Func:: + MenuItemRenderFunction_General_RenderCurrentButtonWithPossibleAlphaTexOnScreenMenuSurface)(); + DAT_ButtonUnknownZero::instance = 0; + return; + } + DAT_ButtonUnknownZero::instance = 1; + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_BuildingKeepSubcategoryButton.cpp b/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_BuildingKeepSubcategoryButton.cpp new file mode 100644 index 000000000..a33dcd6f1 --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_BuildingKeepSubcategoryButton.cpp @@ -0,0 +1,30 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/Game/GameMode2.hpp" + +#include "OpenSHC/Globals/DAT_ButtonUnknownZero.hpp" +#include "OpenSHC/Globals/DAT_GameCore.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace BuildMenu { + + using OpenSHC::Game::GameMode2; + + // FUNCTION: STRONGHOLDCRUSADER 0x00434230 + void MenuItemRenderFunction_BuildMenu_BuildingKeepSubcategoryButton(int param_1, ...) + { + if ((DAT_GameCore::instance.gameMode_2 != OpenSHC::Game::GM_EDITOR) + && (DAT_GameCore::instance.gameMode_2 != OpenSHC::Game::GM_SIEGE_THAT)) { + DAT_ButtonUnknownZero::instance = 1; + return; + } + DAT_ButtonUnknownZero::instance = 0; + MACRO_CALL(OpenSHC::UI_Func:: + MenuItemRenderFunction_General_RenderCurrentButtonWithPossibleAlphaTexOnScreenMenuSurface)(); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_BuildingSubcategoryButton.cpp b/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_BuildingSubcategoryButton.cpp new file mode 100644 index 000000000..e51005174 --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_BuildingSubcategoryButton.cpp @@ -0,0 +1,29 @@ +#include "OpenSHC/Map/MapPropertiesState.func.hpp" +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_ButtonUnknownZero.hpp" +#include "OpenSHC/Globals/DAT_MapPropertiesState.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace BuildMenu { + + // FUNCTION: STRONGHOLDCRUSADER 0x00466920 + void MenuItemRenderFunction_BuildMenu_BuildingSubcategoryButton(int param_1, ...) + { + if (MACRO_CALL_MEMBER(OpenSHC::Map::MapPropertiesState_Func::isMercRecruitableForBuildingType, + DAT_MapPropertiesState::ptr)(param_1) + != 0) { + MACRO_CALL(OpenSHC::UI_Func:: + MenuItemRenderFunction_General_RenderCurrentButtonWithPossibleAlphaTexOnScreenMenuSurface)(); + DAT_ButtonUnknownZero::instance = 0; + return; + } + DAT_ButtonUnknownZero::instance = 1; + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_CurrentlySelectedTroopsDeselectHelper.cpp b/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_CurrentlySelectedTroopsDeselectHelper.cpp new file mode 100644 index 000000000..700745bb7 --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_CurrentlySelectedTroopsDeselectHelper.cpp @@ -0,0 +1,24 @@ +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_ButtonUnknownZero.hpp" +#include "OpenSHC/Globals/DAT_UnitsState.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace BuildMenu { + + // FUNCTION: STRONGHOLDCRUSADER 0x00439390 + void MenuItemRenderFunction_BuildMenu_CurrentlySelectedTroopsDeselectHelper(int param_1, ...) + { + if ((DAT_UnitsState::instance.nHasOwnedUnitInSelection == 0) + || (DAT_ButtonUnknownZero::instance = 0, + ((int*)(&DAT_UnitsState::instance.selectionEngineers))[param_1] == -1)) { + DAT_ButtonUnknownZero::instance = 1; + } + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_ArmySwitchButton.cpp b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_ArmySwitchButton.cpp new file mode 100644 index 000000000..dc0c1a7bd --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_ArmySwitchButton.cpp @@ -0,0 +1,22 @@ +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_00b95b68.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace BuildingAndStatusMenu { + + // FUNCTION: STRONGHOLDCRUSADER 0x0043FC80 + void MenuItemActionHandler_BuildingAndStatusMenu_ArmySwitchButton() + { + DAT_00b95b68::instance = DAT_00b95b68::instance + 1; + if (2 < DAT_00b95b68::instance) { + DAT_00b95b68::instance = 0; + } + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_BuildingHelpTextButton.cpp b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_BuildingHelpTextButton.cpp new file mode 100644 index 000000000..ff8c5a00d --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_BuildingHelpTextButton.cpp @@ -0,0 +1,24 @@ +#include "OpenSHC/Text/TextEditorState.func.hpp" +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_BuildingsState.hpp" +#include "OpenSHC/Globals/DAT_TextEditorState.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace BuildingAndStatusMenu { + + // FUNCTION: STRONGHOLDCRUSADER 0x0043A860 + void MenuItemActionHandler_BuildingAndStatusMenu_BuildingHelpTextButton() + { + if (DAT_BuildingsState::instance.field24_0x18e04c != 0) { + MACRO_CALL_MEMBER(OpenSHC::Text::TextEditorState_Func::openBuildingHelpDialog, + DAT_TextEditorState::ptr)(DAT_BuildingsState::instance.field25_0x18e050); + } + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_BuildingSleep.cpp b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_BuildingSleep.cpp new file mode 100644 index 000000000..0656667ed --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_BuildingSleep.cpp @@ -0,0 +1,35 @@ +#include "OpenSHC/Synchrony/GameSynchronyState.func.hpp" +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/Commands/GameCommandType.hpp" +#include "OpenSHC/Game/GameMode2.hpp" + +#include "OpenSHC/Globals/DAT_BuildingsState.hpp" +#include "OpenSHC/Globals/DAT_GameCore.hpp" +#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace BuildingAndStatusMenu { + + using OpenSHC::Commands::GameCommandType; + using OpenSHC::Game::GameMode2; + + // FUNCTION: STRONGHOLDCRUSADER 0x004660B0 + void MenuItemActionHandler_BuildingAndStatusMenu_BuildingSleep() + { + if (DAT_GameCore::instance.gameMode_2 == OpenSHC::Game::GM_CRUSADER_TUTORIAL) { + MACRO_CALL(OpenSHC::UI_Func::SetTutorialHintActiveWithTimestamp)(); + return; + } + DAT_GameSynchronyState::instance.DAT_GameCommandParam0 + = DAT_BuildingsState::instance.buildings[DAT_BuildingsState::instance.menuSelectedBuildingID] + .buildingType; + MACRO_CALL_MEMBER(OpenSHC::Synchrony::GameSynchronyState_Func::queueCommand, + DAT_GameSynchronyState::ptr)(OpenSHC::Commands::GCT_BUILDING_SLEEP); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_MarketMenuChangeButtons.cpp b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_MarketMenuChangeButtons.cpp new file mode 100644 index 000000000..478d14684 --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_MarketMenuChangeButtons.cpp @@ -0,0 +1,26 @@ +#include "OpenSHC/Game/GameCore.func.hpp" +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Enums/MenuViewType.hpp" + +#include "OpenSHC/Globals/DAT_GameCore.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace BuildingAndStatusMenu { + + using OpenSHC::UI::Enums::MenuViewType; + + // FUNCTION: STRONGHOLDCRUSADER 0x00465920 + void MenuItemActionHandler_BuildingAndStatusMenu_MarketMenuChangeButtons(int param_1, ...) + { + DAT_GameCore::instance.buildingandstatusmenuMenuTabToSwitchTo = param_1; + MACRO_CALL_MEMBER(OpenSHC::Game::GameCore_Func::switchToMenuView, DAT_GameCore::ptr)( + OpenSHC::UI::Enums::MVT_BUILDING_AND_STATUS_MENU, 0); + DAT_GameCore::instance.field61_0x100 = param_1; + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_OutpostUnitSelection.cpp b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_OutpostUnitSelection.cpp new file mode 100644 index 000000000..5b839db64 --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_OutpostUnitSelection.cpp @@ -0,0 +1,22 @@ +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_BuildingsState.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace BuildingAndStatusMenu { + + // FUNCTION: STRONGHOLDCRUSADER 0x00466710 + void MenuItemActionHandler_BuildingAndStatusMenu_OutpostUnitSelection(int bitIndex, ...) + { + // Toggle the bit selected by the menu action in the currently selected + // building's outpost unit-selection mask. + DAT_BuildingsState::instance.buildings[DAT_BuildingsState::instance.menuSelectedBuildingID] + .outpostRelatedUnk1 ^= (ushort)(1 << bitIndex); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_PopularityMenuSwitchButtonUnk.cpp b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_PopularityMenuSwitchButtonUnk.cpp new file mode 100644 index 000000000..d7a090ce4 --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_PopularityMenuSwitchButtonUnk.cpp @@ -0,0 +1,19 @@ +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_GameCore.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace BuildingAndStatusMenu { + + // FUNCTION: STRONGHOLDCRUSADER 0x0043F2B0 + void MenuItemActionHandler_BuildingAndStatusMenu_PopularityMenuSwitchButtonUnk() + { + DAT_GameCore::instance.field80_0x144 = DAT_GameCore::instance.field80_0x144 ^ 1; + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_StopBuildingOrPeasantBinkPlayback.cpp b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_StopBuildingOrPeasantBinkPlayback.cpp new file mode 100644 index 000000000..5374610cd --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_StopBuildingOrPeasantBinkPlayback.cpp @@ -0,0 +1,28 @@ +#include "OpenSHC/Rendering/Bink/BinkControlClass.func.hpp" +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +#include "OpenSHC/Globals/DAT_BinkControlState.hpp" +#include "OpenSHC/Globals/DAT_BuildingsState.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace BuildingAndStatusMenu { + + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x00439890 + void MenuItemActionHandler_BuildingAndStatusMenu_StopBuildingOrPeasantBinkPlayback() + { + if (DAT_BuildingsState::instance.DAT_IsBuildingOrPeasantBinkPlaying != FALSE) { + DAT_BuildingsState::instance.DAT_IsBuildingOrPeasantBinkPlaying = FALSE; + MACRO_CALL_MEMBER(OpenSHC::Rendering::Bink::BinkControlClass_Func::stopBinkPlayback, + DAT_BinkControlState::ptr)(0); + } + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_UnknownMin1Unk.cpp b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_UnknownMin1Unk.cpp new file mode 100644 index 000000000..11fc8767b --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_UnknownMin1Unk.cpp @@ -0,0 +1,16 @@ +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/INT_00df335c.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace BuildingAndStatusMenu { + + // FUNCTION: STRONGHOLDCRUSADER 0x00464D90 + void MenuItemActionHandler_BuildingAndStatusMenu_UnknownMin1Unk() { INT_00df335c::instance = -1; } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_Unknown_Countdown.cpp b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_Unknown_Countdown.cpp new file mode 100644 index 000000000..58f4683cb --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_Unknown_Countdown.cpp @@ -0,0 +1,19 @@ +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_GameCore.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace BuildingAndStatusMenu { + + // FUNCTION: STRONGHOLDCRUSADER 0x0043A850 + void MenuItemActionHandler_BuildingAndStatusMenu_Unknown_Countdown() + { + DAT_GameCore::instance.countdown = 1; + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_Unknown_Min1.cpp b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_Unknown_Min1.cpp new file mode 100644 index 000000000..8abba8c1f --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_Unknown_Min1.cpp @@ -0,0 +1,16 @@ +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_00df3350.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace BuildingAndStatusMenu { + + // FUNCTION: STRONGHOLDCRUSADER 0x004649C0 + void MenuItemActionHandler_BuildingAndStatusMenu_Unknown_Min1() { DAT_00df3350::instance = 0xffffffff; } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemRenderFunction_BuildingAndStatusMenu_ArmyStatusSwitchButton.cpp b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemRenderFunction_BuildingAndStatusMenu_ArmyStatusSwitchButton.cpp new file mode 100644 index 000000000..5890c469a --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemRenderFunction_BuildingAndStatusMenu_ArmyStatusSwitchButton.cpp @@ -0,0 +1,18 @@ +#include "OpenSHC/UI.func.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace BuildingAndStatusMenu { + + // FUNCTION: STRONGHOLDCRUSADER 0x0043FCA0 + void MenuItemRenderFunction_BuildingAndStatusMenu_ArmyStatusSwitchButton() + { + MACRO_CALL(OpenSHC::UI_Func:: + MenuItemRenderFunction_General_RenderCurrentButtonWithPossibleAlphaTexOnScreenMenuSurface)(); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemRenderFunction_BuildingAndStatusMenu_BarracksAndMercenaryPostHelpText.cpp b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemRenderFunction_BuildingAndStatusMenu_BarracksAndMercenaryPostHelpText.cpp new file mode 100644 index 000000000..bfb9ad5db --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemRenderFunction_BuildingAndStatusMenu_BarracksAndMercenaryPostHelpText.cpp @@ -0,0 +1,22 @@ +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_BuildingsState.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace BuildingAndStatusMenu { + + // FUNCTION: STRONGHOLDCRUSADER 0x0043A8C0 + void MenuItemRenderFunction_BuildingAndStatusMenu_BarracksAndMercenaryPostHelpText(int param_1, ...) + { + if (DAT_BuildingsState::instance.field24_0x18e04c != 0) { + MACRO_CALL(OpenSHC::UI_Func:: + MenuItemRenderFunction_General_RenderCurrentButtonWithPossibleAlphaTexOnScreenMenuSurface)(); + } + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemRenderFunction_BuildingAndStatusMenu_BuildingHelpTextButton.cpp b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemRenderFunction_BuildingAndStatusMenu_BuildingHelpTextButton.cpp new file mode 100644 index 000000000..c112383c3 --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemRenderFunction_BuildingAndStatusMenu_BuildingHelpTextButton.cpp @@ -0,0 +1,32 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Enums/BuildingsAndStatusMenuTabType.hpp" + +#include "OpenSHC/Globals/DAT_BuildingsState.hpp" +#include "OpenSHC/Globals/DAT_ButtonUnknownZero.hpp" +#include "OpenSHC/Globals/DAT_GameCore.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace BuildingAndStatusMenu { + + using OpenSHC::UI::Enums::BuildingsAndStatusMenuTabType; + + // FUNCTION: STRONGHOLDCRUSADER 0x0043A880 + void MenuItemRenderFunction_BuildingAndStatusMenu_BuildingHelpTextButton(int param_1, ...) + { + DAT_ButtonUnknownZero::instance = 0; + if ((DAT_GameCore::instance.activeMenuTab.tabType + == OpenSHC::UI::Enums::BASMTT_BARRACKS_OR_MPMENU_MODEM) + || (DAT_GameCore::instance.activeMenuTab.tabType == OpenSHC::UI::Enums::BASMTT_MERCENARYPOST)) { + DAT_ButtonUnknownZero::instance = 1; + } else if (DAT_BuildingsState::instance.field24_0x18e04c != 0) { + MACRO_CALL(OpenSHC::UI_Func:: + MenuItemRenderFunction_General_RenderCurrentButtonWithPossibleAlphaTexOnScreenMenuSurface)(); + } + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemRenderFunction_BuildingAndStatusMenu_PopularityMenuSwitchButton.cpp b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemRenderFunction_BuildingAndStatusMenu_PopularityMenuSwitchButton.cpp new file mode 100644 index 000000000..6cf723304 --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemRenderFunction_BuildingAndStatusMenu_PopularityMenuSwitchButton.cpp @@ -0,0 +1,27 @@ +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_CurrentButtonGmDataIndex.hpp" +#include "OpenSHC/Globals/DAT_GameCore.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace BuildingAndStatusMenu { + + // FUNCTION: STRONGHOLDCRUSADER 0x0043F2C0 + void MenuItemRenderFunction_BuildingAndStatusMenu_PopularityMenuSwitchButton(int param_1, ...) + + { + if (DAT_GameCore::instance.field78_0x148 != 1) { + if (DAT_GameCore::instance.field77_0x144 == 1) { + DAT_CurrentButtonGmDataIndex::instance = 0x73; + } + MACRO_CALL(OpenSHC::UI_Func:: + MenuItemRenderFunction_General_RenderCurrentButtonWithPossibleAlphaTexOnScreenMenuSurface)(); + } + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/Chat/MenuItemActionHandler_Chat_SendMessageToPlayer.cpp b/src/OpenSHC/UI/MenuItems/Chat/MenuItemActionHandler_Chat_SendMessageToPlayer.cpp new file mode 100644 index 000000000..1e2879a63 --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/Chat/MenuItemActionHandler_Chat_SendMessageToPlayer.cpp @@ -0,0 +1,24 @@ +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace Chat { + + // FUNCTION: STRONGHOLDCRUSADER 0x0047FFA0 + void MenuItemActionHandler_Chat_SendMessageToPlayer(int param_1, ...) + { + if (param_1 < 0) { + unsigned int param = -param_1; + DAT_GameSynchronyState::instance.DAT_ChatMessageReceiverArray[param] ^= 1; + } + DAT_GameSynchronyState::instance + .DAT_ChatMessageReceiverArray[DAT_GameSynchronyState::instance.currentPlayerSlotID] = 1; + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/Chat/MenuItemActionHandler_Chat_TauntButtons.cpp b/src/OpenSHC/UI/MenuItems/Chat/MenuItemActionHandler_Chat_TauntButtons.cpp new file mode 100644 index 000000000..e7b2646c2 --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/Chat/MenuItemActionHandler_Chat_TauntButtons.cpp @@ -0,0 +1,25 @@ +#include "OpenSHC/Synchrony/GameSynchronyState.func.hpp" +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/Commands/GameCommandType.hpp" + +#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace Chat { + + using OpenSHC::Commands::GameCommandType; + + // FUNCTION: STRONGHOLDCRUSADER 0x0048F850 + void MenuItemActionHandler_Chat_TauntButtons(int param_1, ...) + { + DAT_GameSynchronyState::instance.DAT_ChatTauntOrMessage = param_1; + MACRO_CALL_MEMBER(OpenSHC::Synchrony::GameSynchronyState_Func::queueCommand, + DAT_GameSynchronyState::ptr)(OpenSHC::Commands::GCT_TAUNT_OR_CHAT); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/ChooseNetworkServiceProvider/MenuItemActionHandler_ChooseNetworkServiceProvider_ModemTableRows.cpp b/src/OpenSHC/UI/MenuItems/ChooseNetworkServiceProvider/MenuItemActionHandler_ChooseNetworkServiceProvider_ModemTableRows.cpp new file mode 100644 index 000000000..020ff2535 --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/ChooseNetworkServiceProvider/MenuItemActionHandler_ChooseNetworkServiceProvider_ModemTableRows.cpp @@ -0,0 +1,22 @@ +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace ChooseNetworkServiceProvider { + + // FUNCTION: STRONGHOLDCRUSADER 0x0047D0E0 + void MenuItemActionHandler_ChooseNetworkServiceProvider_ModemTableRows(int param_1, ...) + { + if (DAT_GameSynchronyState::instance.modemScrollBarOffset + param_1 + < DAT_GameSynchronyState::instance.modemScrollbarCount) { + DAT_GameSynchronyState::instance.modemScrollbarIndex = param_1; + } + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/DeleteGameRecord/MenuItemActionHandler_DeleteGameRecord_Main.cpp b/src/OpenSHC/UI/MenuItems/DeleteGameRecord/MenuItemActionHandler_DeleteGameRecord_Main.cpp new file mode 100644 index 000000000..c2099dca2 --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/DeleteGameRecord/MenuItemActionHandler_DeleteGameRecord_Main.cpp @@ -0,0 +1,32 @@ +#include "OpenSHC/Game/Skirmish.func.hpp" +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuModalComposition.func.hpp" +#include "OpenSHC/UI/Enums/MenuModalType.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +#include "OpenSHC/Globals/DAT_00ed2788.hpp" +#include "OpenSHC/Globals/DAT_MenuModalComposition1.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace DeleteGameRecord { + + using OpenSHC::UI::Enums::MenuModalType; + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x004D9D60 + void MenuItemActionHandler_DeleteGameRecord_Main(int param_1, ...) + { + if (param_1 == 0x16) { + MACRO_CALL(OpenSHC::Game::Skirmish_Func::SkirmishLeaderboard_DeleteEntry)(DAT_00ed2788::instance); + MACRO_CALL(OpenSHC::Game::Skirmish_Func::Skirmish_PrepareLeaderboardView)(); + } + MACRO_CALL_MEMBER(OpenSHC::UI::MenuModalComposition_Func::activateModalDialog, + DAT_MenuModalComposition1::ptr)(OpenSHC::UI::Enums::MMT_NONE, FALSE); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/DisableArabTroops/MenuItemActionHandler_DisableArabTroops_Main.cpp b/src/OpenSHC/UI/MenuItems/DisableArabTroops/MenuItemActionHandler_DisableArabTroops_Main.cpp new file mode 100644 index 000000000..27f213935 --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/DisableArabTroops/MenuItemActionHandler_DisableArabTroops_Main.cpp @@ -0,0 +1,34 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuModalComposition.func.hpp" +#include "OpenSHC/UI/Enums/MenuModalType.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +#include "OpenSHC/Globals/DAT_MapPropertiesState.hpp" +#include "OpenSHC/Globals/DAT_MenuModalComposition1.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace DisableArabTroops { + + using OpenSHC::UI::Enums::MenuModalType; + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x004BB650 + void MenuItemActionHandler_DisableArabTroops_Main(int param_1, ...) + { + if ((uint)param_1 < 8) { + DAT_MapPropertiesState::instance.SEC_MercRecruitable[param_1] + = DAT_MapPropertiesState::instance.SEC_MercRecruitable[param_1] ^ 1; + return; + } + if (param_1 == -3) { + MACRO_CALL_MEMBER(OpenSHC::UI::MenuModalComposition_Func::activateModalDialog, + DAT_MenuModalComposition1::ptr)(OpenSHC::UI::Enums::MMT_BUILDING_AVAILABILITY, FALSE); + } + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/DisableEuroTroops/MenuItemActionHandler_DisableEuroTroops_Main.cpp b/src/OpenSHC/UI/MenuItems/DisableEuroTroops/MenuItemActionHandler_DisableEuroTroops_Main.cpp new file mode 100644 index 000000000..dce8deaa2 --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/DisableEuroTroops/MenuItemActionHandler_DisableEuroTroops_Main.cpp @@ -0,0 +1,34 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuModalComposition.func.hpp" +#include "OpenSHC/UI/Enums/MenuModalType.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +#include "OpenSHC/Globals/DAT_MapPropertiesState.hpp" +#include "OpenSHC/Globals/DAT_MenuModalComposition1.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace DisableEuroTroops { + + using OpenSHC::UI::Enums::MenuModalType; + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x004BB540 + void MenuItemActionHandler_DisableEuroTroops_Main(int param_1, ...) + { + if ((uint)param_1 < 8) { + DAT_MapPropertiesState::instance.SEC_MercRecruitable[param_1 + -7] + = DAT_MapPropertiesState::instance.SEC_MercRecruitable[param_1 + -7] ^ 1; + return; + } + if (param_1 == -3) { + MACRO_CALL_MEMBER(OpenSHC::UI::MenuModalComposition_Func::activateModalDialog, + DAT_MenuModalComposition1::ptr)(OpenSHC::UI::Enums::MMT_BUILDING_AVAILABILITY, FALSE); + } + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/DisplayScenarioHelpText/MenuItemRenderFunction_DisplayScenarioHelpText_AnotherButtonUnk.cpp b/src/OpenSHC/UI/MenuItems/DisplayScenarioHelpText/MenuItemRenderFunction_DisplayScenarioHelpText_AnotherButtonUnk.cpp new file mode 100644 index 000000000..b219e74e3 --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/DisplayScenarioHelpText/MenuItemRenderFunction_DisplayScenarioHelpText_AnotherButtonUnk.cpp @@ -0,0 +1,22 @@ +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_TextEditorState.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace DisplayScenarioHelpText { + + // FUNCTION: STRONGHOLDCRUSADER 0x0045F120 + void MenuItemRenderFunction_DisplayScenarioHelpText_AnotherButtonUnk(int param_1, ...) + { + if (DAT_TextEditorState::instance.helpSectionHistoryStack[0] != -1) { + MACRO_CALL(OpenSHC::UI_Func:: + MenuItemRenderFunction_General_RenderCurrentButtonWithPossibleAlphaTexOnScreenMenuSurface)(); + } + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/EnterTitleOnGameStart/MenuItemActionHandler_EnterTitleOnGameStart_Button.cpp b/src/OpenSHC/UI/MenuItems/EnterTitleOnGameStart/MenuItemActionHandler_EnterTitleOnGameStart_Button.cpp new file mode 100644 index 000000000..8be632a41 --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/EnterTitleOnGameStart/MenuItemActionHandler_EnterTitleOnGameStart_Button.cpp @@ -0,0 +1,36 @@ +#include "OpenSHC/Game/GameCore.func.hpp" +#include "OpenSHC/Text/UserTextHandler.func.hpp" +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuModalComposition.func.hpp" +#include "OpenSHC/UI/Enums/MenuModalType.hpp" +#include "OpenSHC/UI/Enums/MenuViewType.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +#include "OpenSHC/Globals/DAT_GameCore.hpp" +#include "OpenSHC/Globals/DAT_MenuModalComposition1.hpp" +#include "OpenSHC/Globals/DAT_UserTextHandlerState.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace EnterTitleOnGameStart { + + using OpenSHC::UI::Enums::MenuModalType; + using OpenSHC::UI::Enums::MenuViewType; + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x00491C20 + void MenuItemActionHandler_EnterTitleOnGameStart_Button(int param_1, ...) + { + MACRO_CALL_MEMBER(OpenSHC::UI::MenuModalComposition_Func::activateModalDialog, + DAT_MenuModalComposition1::ptr)(OpenSHC::UI::Enums::MMT_NONE, FALSE); + MACRO_CALL_MEMBER(OpenSHC::Text::UserTextHandler_Func::resetToTextIndex, DAT_UserTextHandlerState::ptr)( + 9); + MACRO_CALL_MEMBER(OpenSHC::Game::GameCore_Func::switchToMenuView, DAT_GameCore::ptr)( + OpenSHC::UI::Enums::MVT_MAIN_MENU, 0); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/FindingNetworkSessions/MenuItemActionHandler_FindingNetworkSessions_EnumerateDPlaySessions.cpp b/src/OpenSHC/UI/MenuItems/FindingNetworkSessions/MenuItemActionHandler_FindingNetworkSessions_EnumerateDPlaySessions.cpp new file mode 100644 index 000000000..0fcd21840 --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/FindingNetworkSessions/MenuItemActionHandler_FindingNetworkSessions_EnumerateDPlaySessions.cpp @@ -0,0 +1,21 @@ +#include "OpenSHC/Synchrony/GameSynchronyState.func.hpp" +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace FindingNetworkSessions { + + // FUNCTION: STRONGHOLDCRUSADER 0x0048BF70 + void MenuItemActionHandler_FindingNetworkSessions_EnumerateDPlaySessions(int param_1, ...) + { + MACRO_CALL_MEMBER(OpenSHC::Synchrony::GameSynchronyState_Func::restartDPlaySessionEnumeration, + DAT_GameSynchronyState::ptr)(param_1); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/FindingNetworkSessions/MenuItemActionHandler_FindingNetworkSessions_TableRows.cpp b/src/OpenSHC/UI/MenuItems/FindingNetworkSessions/MenuItemActionHandler_FindingNetworkSessions_TableRows.cpp new file mode 100644 index 000000000..e4fa06f45 --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/FindingNetworkSessions/MenuItemActionHandler_FindingNetworkSessions_TableRows.cpp @@ -0,0 +1,22 @@ +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace FindingNetworkSessions { + + // FUNCTION: STRONGHOLDCRUSADER 0x0047D3F0 + void MenuItemActionHandler_FindingNetworkSessions_TableRows(int param_1, ...) + { + if (DAT_GameSynchronyState::instance.scrollBarItemOffset + param_1 + < DAT_GameSynchronyState::instance.DPLAY_SessionsCount) { + DAT_GameSynchronyState::instance.scrollBarIndex = param_1; + } + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/General/MenuItemActionHandler_General_DisplayConditionalText.cpp b/src/OpenSHC/UI/MenuItems/General/MenuItemActionHandler_General_DisplayConditionalText.cpp new file mode 100644 index 000000000..6e9050055 --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/General/MenuItemActionHandler_General_DisplayConditionalText.cpp @@ -0,0 +1,22 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/BottomLeftTextDisplayState.func.hpp" + +#include "OpenSHC/Globals/DAT_BottomLeftTextDisplayState.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace General { + + // FUNCTION: STRONGHOLDCRUSADER 0x004F6A60 + void MenuItemActionHandler_General_DisplayConditionalText(int param_1, ...) + { + MACRO_CALL_MEMBER( + OpenSHC::UI::BottomLeftTextDisplayState_Func::renderCurrentlyDisplayedTextConstructionCost, + DAT_BottomLeftTextDisplayState::ptr)(param_1); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/General/MenuItemActionHandler_General_RemoveConditionalTextOrReleaseHoverUnk.cpp b/src/OpenSHC/UI/MenuItems/General/MenuItemActionHandler_General_RemoveConditionalTextOrReleaseHoverUnk.cpp new file mode 100644 index 000000000..07a54b9eb --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/General/MenuItemActionHandler_General_RemoveConditionalTextOrReleaseHoverUnk.cpp @@ -0,0 +1,21 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/BottomLeftTextDisplayState.func.hpp" + +#include "OpenSHC/Globals/DAT_BottomLeftTextDisplayState.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace General { + + // FUNCTION: STRONGHOLDCRUSADER 0x004F6A70 + void MenuItemActionHandler_General_RemoveConditionalTextOrReleaseHoverUnk(int param_1, ...) + { + MACRO_CALL_MEMBER(OpenSHC::UI::BottomLeftTextDisplayState_Func::hasPassedCountdownOrDuration, + DAT_BottomLeftTextDisplayState::ptr)(); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/General/MenuItemActionHandler_General_Unknown2.cpp b/src/OpenSHC/UI/MenuItems/General/MenuItemActionHandler_General_Unknown2.cpp new file mode 100644 index 000000000..2a6117523 --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/General/MenuItemActionHandler_General_Unknown2.cpp @@ -0,0 +1,19 @@ +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_GameCore.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace General { + + // FUNCTION: STRONGHOLDCRUSADER 0x00434260 + void MenuItemActionHandler_General_Unknown2(int param_1, ...) + { + DAT_GameCore::instance.field12_0x30 = param_1; + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/InGameMenu/MenuItemActionHandler_InGameMenu_UnknownBinkRelated.cpp b/src/OpenSHC/UI/MenuItems/InGameMenu/MenuItemActionHandler_InGameMenu_UnknownBinkRelated.cpp new file mode 100644 index 000000000..595b66b32 --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/InGameMenu/MenuItemActionHandler_InGameMenu_UnknownBinkRelated.cpp @@ -0,0 +1,25 @@ +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_BinkControlState.hpp" +#include "OpenSHC/Globals/DAT_GameCore.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace InGameMenu { + + // FUNCTION: STRONGHOLDCRUSADER 0x00433230 + void MenuItemActionHandler_InGameMenu_UnknownBinkRelated(int param_1, ...) + { + if (DAT_GameCore::instance.isBinkVideoPlaying != 0) { + if (DAT_BinkControlState::instance.binkObjPtrArray[1] == NULL) { + DAT_GameCore::instance.isBinkVideoPlaying = 0; + } + DAT_GameCore::instance.countdown = 1; + } + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/InGameMenu/MenuItemRenderFunction_InGameMenu_MapEventIconUnk.cpp b/src/OpenSHC/UI/MenuItems/InGameMenu/MenuItemRenderFunction_InGameMenu_MapEventIconUnk.cpp new file mode 100644 index 000000000..88b70ec4b --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/InGameMenu/MenuItemRenderFunction_InGameMenu_MapEventIconUnk.cpp @@ -0,0 +1,28 @@ +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_ButtonUnknownZero.hpp" +#include "OpenSHC/Globals/DAT_GameCore.hpp" +#include "OpenSHC/Globals/DAT_MinimapViewState.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace InGameMenu { + + // FUNCTION: STRONGHOLDCRUSADER 0x004B6500 + void MenuItemRenderFunction_InGameMenu_MapEventIconUnk(int param_1, ...) + { + DAT_ButtonUnknownZero::instance = 1; + if ((DAT_MinimapViewState::instance.spawnMomentCount != 0) + && (DAT_GameCore::instance.isBinkVideoPlaying == 0)) { + DAT_ButtonUnknownZero::instance = 0; + MACRO_CALL(OpenSHC::UI_Func:: + MenuItemRenderFunction_General_RenderCurrentButtonWithPossibleAlphaTexOnScreenMenuSurface)(); + return; + } + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/LobbyMenu/MenuItemRenderFunction_LobbyMenu_Unknown.cpp b/src/OpenSHC/UI/MenuItems/LobbyMenu/MenuItemRenderFunction_LobbyMenu_Unknown.cpp new file mode 100644 index 000000000..d705ac7ea --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/LobbyMenu/MenuItemRenderFunction_LobbyMenu_Unknown.cpp @@ -0,0 +1,28 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/BottomLeftTextDisplayState.func.hpp" +#include "OpenSHC/UI/Enums/MenuModalType.hpp" + +#include "OpenSHC/Globals/DAT_BottomLeftTextDisplayState.hpp" +#include "OpenSHC/Globals/DAT_MenuModalComposition1.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace LobbyMenu { + + using OpenSHC::UI::Enums::MenuModalType; + + // FUNCTION: STRONGHOLDCRUSADER 0x0042AC40 + void MenuItemRenderFunction_LobbyMenu_Unknown(int param_1, ...) + { + if (DAT_MenuModalComposition1::instance.activeModalDialogID == OpenSHC::UI::Enums::MMT_NONE) { + MACRO_CALL_MEMBER( + OpenSHC::UI::BottomLeftTextDisplayState_Func::renderCurrentlyDisplayedTextConstructionCost, + DAT_BottomLeftTextDisplayState::ptr)(param_1); + } + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/NetworkOptions/MenuItemActionHandler_NetworkOptions_LeaveButtonUnk.cpp b/src/OpenSHC/UI/MenuItems/NetworkOptions/MenuItemActionHandler_NetworkOptions_LeaveButtonUnk.cpp new file mode 100644 index 000000000..1f9fd39a3 --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/NetworkOptions/MenuItemActionHandler_NetworkOptions_LeaveButtonUnk.cpp @@ -0,0 +1,23 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuTextInputState.func.hpp" + +#include "OpenSHC/Globals/DAT_MenuTextInputState.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace NetworkOptions { + + // FUNCTION: STRONGHOLDCRUSADER 0x004941F0 + void MenuItemActionHandler_NetworkOptions_LeaveButtonUnk(int param_1, ...) + { + if (param_1 == 0x11) { + MACRO_CALL_MEMBER( + OpenSHC::UI::MenuTextInputState_Func::popModalDialog, DAT_MenuTextInputState::ptr)(); + } + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/SaveLoadMap/MenuItemRenderFunction_SaveLoadMap_Scrollbar.cpp b/src/OpenSHC/UI/MenuItems/SaveLoadMap/MenuItemRenderFunction_SaveLoadMap_Scrollbar.cpp new file mode 100644 index 000000000..52460fd60 --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/SaveLoadMap/MenuItemRenderFunction_SaveLoadMap_Scrollbar.cpp @@ -0,0 +1,29 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +#include "OpenSHC/Globals/DAT_ButtonH.hpp" +#include "OpenSHC/Globals/DAT_ButtonX.hpp" +#include "OpenSHC/Globals/DAT_ButtonY.hpp" +#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace SaveLoadMap { + + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x00492C60 + void MenuItemRenderFunction_SaveLoadMap_Scrollbar( + int param_1, int thumbYPos, int param_3, int thumbHeight, BOOLEnum isDragged) + { + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawScrollbar, + DAT_PencilRenderCore::ptr)(DAT_ButtonX::instance, (int)((int)(DAT_ButtonY::instance)), + (int)((int)(DAT_ButtonH::instance)), thumbYPos, isDragged, thumbHeight, 0); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/SaveMap/MenuItemActionHandler_SaveMap_ReturnKeySave.cpp b/src/OpenSHC/UI/MenuItems/SaveMap/MenuItemActionHandler_SaveMap_ReturnKeySave.cpp new file mode 100644 index 000000000..20a041142 --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/SaveMap/MenuItemActionHandler_SaveMap_ReturnKeySave.cpp @@ -0,0 +1,26 @@ +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_UserTextHandlerState.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace SaveMap { + + // FUNCTION: STRONGHOLDCRUSADER 0x00494920 + void MenuItemActionHandler_SaveMap_ReturnKeySave(int param_1, ...) + { + bool bVar1; + + bVar1 = DAT_UserTextHandlerState::instance.returnPressed != 0; + DAT_UserTextHandlerState::instance.returnPressed = 0; + if (bVar1) { + MACRO_CALL(OpenSHC::UI_Func::MenuItemActionHandler_SaveLoadMap_Buttons)(3); + return; + } + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/SelectCrusade/MenuItemRenderFunction_SelectCrusade_Main.cpp b/src/OpenSHC/UI/MenuItems/SelectCrusade/MenuItemRenderFunction_SelectCrusade_Main.cpp new file mode 100644 index 000000000..544af5fa3 --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/SelectCrusade/MenuItemRenderFunction_SelectCrusade_Main.cpp @@ -0,0 +1,30 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +#include "OpenSHC/Globals/DAT_ButtonCurrentlyInteracting.hpp" +#include "OpenSHC/Globals/DAT_HighlightedSkirmishType.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace SelectCrusade { + + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x0042C060 + void MenuItemRenderFunction_SelectCrusade_Main(int param_1, ...) + { + if (param_1 == -1) { + DAT_HighlightedSkirmishType::instance = 0; + } + if (DAT_ButtonCurrentlyInteracting::instance != FALSE) { + DAT_HighlightedSkirmishType::instance = param_1; + } + MACRO_CALL(OpenSHC::UI_Func:: + MenuItemRenderFunction_General_RenderCurrentButtonWithPossibleAlphaTexOnScreenMenuSurface)(); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/UnusedOldTitleMenu/MenuItemActionHandler_UnusedOldTitleMenu_General.cpp b/src/OpenSHC/UI/MenuItems/UnusedOldTitleMenu/MenuItemActionHandler_UnusedOldTitleMenu_General.cpp new file mode 100644 index 000000000..fcdfc3934 --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/UnusedOldTitleMenu/MenuItemActionHandler_UnusedOldTitleMenu_General.cpp @@ -0,0 +1,19 @@ +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_WindowAndDirectDraw.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace UnusedOldTitleMenu { + + // FUNCTION: STRONGHOLDCRUSADER 0x00440420 + void MenuItemActionHandler_UnusedOldTitleMenu_General(int param_1, ...) + { + DAT_WindowAndDirectDraw::instance.postWindowCloseMessage = 1; + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/UnusedWinCondition/MenuItemActionHandler_UnusedWinCondition_Options.cpp b/src/OpenSHC/UI/MenuItems/UnusedWinCondition/MenuItemActionHandler_UnusedWinCondition_Options.cpp new file mode 100644 index 000000000..fb1b5f4d2 --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/UnusedWinCondition/MenuItemActionHandler_UnusedWinCondition_Options.cpp @@ -0,0 +1,35 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuModalComposition.func.hpp" +#include "OpenSHC/UI/Enums/MenuModalType.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +#include "OpenSHC/Globals/DAT_MenuModalComposition1.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace UnusedWinCondition { + + using OpenSHC::UI::Enums::MenuModalType; + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x004B1090 + void MenuItemActionHandler_UnusedWinCondition_Options(int param_1, ...) + { + if (param_1 < (int)DAT_MenuModalComposition1::instance.mbr_0x64) { + DAT_MenuModalComposition1::instance.sliderValue = param_1; + *DAT_MenuModalComposition1::instance.destination = param_1; + MACRO_CALL_MEMBER(OpenSHC::UI::MenuModalComposition_Func::activateModalDialog, + DAT_MenuModalComposition1::ptr)(OpenSHC::UI::Enums::MMT_NONE, FALSE); + if (DAT_MenuModalComposition1::instance.sliderCallbackFunction != (undefined*)0x0) { + + ((void (*)())DAT_MenuModalComposition1::instance.sliderCallbackFunction)(); + return; + } + } + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuModalComposition/findModalMenu.cpp b/src/OpenSHC/UI/MenuModalComposition/findModalMenu.cpp new file mode 100644 index 000000000..65865e885 --- /dev/null +++ b/src/OpenSHC/UI/MenuModalComposition/findModalMenu.cpp @@ -0,0 +1,31 @@ +#include "OpenSHC/UI/MenuModalComposition.func.hpp" +#include "OpenSHC/UI/Enums/MenuModalType.hpp" +#include "OpenSHC/UI/MenuModal.hpp" + +#include "OpenSHC/Globals/DAT_ModalMenuArrayPointerToStackTop.hpp" + +namespace OpenSHC { +namespace UI { + + using OpenSHC::UI::MenuModal; + using OpenSHC::UI::Enums::MenuModalType; + + // FUNCTION: STRONGHOLDCRUSADER 0x004A9EB0 + MenuModal* MenuModalComposition::findModalMenu(MenuModalType menuModalID) + { + MenuModal* pMVar1; + + pMVar1 = DAT_ModalMenuArrayPointerToStackTop::instance; + while (true) { + if (pMVar1 == (MenuModal*)0x0) { + return (MenuModal*)0x0; + } + if (pMVar1->menuModalID == menuModalID) + break; + pMVar1 = pMVar1->pointerToNextModalMenu; + } + return pMVar1; + } + +} +} diff --git a/src/OpenSHC/UI/MenuModalComposition/loadAllMenuElementsOfMenuModals.cpp b/src/OpenSHC/UI/MenuModalComposition/loadAllMenuElementsOfMenuModals.cpp new file mode 100644 index 000000000..3e7175fb5 --- /dev/null +++ b/src/OpenSHC/UI/MenuModalComposition/loadAllMenuElementsOfMenuModals.cpp @@ -0,0 +1,28 @@ +#include "OpenSHC/UI/Menu.func.hpp" +#include "OpenSHC/UI/MenuModalComposition.func.hpp" +#include "OpenSHC/UI/Menu.hpp" +#include "OpenSHC/UI/MenuModal.hpp" + +#include "OpenSHC/Globals/DAT_ModalMenuArrayPointerToStackTop.hpp" + +namespace OpenSHC { +namespace UI { + + using OpenSHC::UI::Menu; + using OpenSHC::UI::MenuModal; + + // FUNCTION: STRONGHOLDCRUSADER 0x004A9E80 + void MenuModalComposition::loadAllMenuElementsOfMenuModals() + { + MenuModal* pMVar1; + + for (pMVar1 = DAT_ModalMenuArrayPointerToStackTop::instance; pMVar1 != (MenuModal*)0x0; + pMVar1 = pMVar1->pointerToNextModalMenu) { + if (pMVar1->pointerToMenu != (Menu*)0x0) { + MACRO_CALL_MEMBER(OpenSHC::UI::Menu_Func::loadMenuElements, pMVar1->pointerToMenu)(0); + } + } + } + +} +} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_CreateOrTriggerInvasion.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_CreateOrTriggerInvasion.cpp new file mode 100644 index 000000000..d9adcb6f5 --- /dev/null +++ b/src/OpenSHC/UI/MenuModalRenderFunction_CreateOrTriggerInvasion.cpp @@ -0,0 +1,16 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" + +namespace OpenSHC { + +// FUNCTION: STRONGHOLDCRUSADER 0x004AB540 +void UI::MenuModalRenderFunction_CreateOrTriggerInvasion(int x, int y, int width, int height) +{ + + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)( + 199, 0x2e, x, y, width); +} + +} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataAiInfo.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataAiInfo.cpp new file mode 100644 index 000000000..b28ef209c --- /dev/null +++ b/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataAiInfo.cpp @@ -0,0 +1,14 @@ +#include "OpenSHC/AI/AICState.func.hpp" +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_AICState.hpp" + +namespace OpenSHC { + +// FUNCTION: STRONGHOLDCRUSADER 0x004AAA60 +void UI::MenuModalRenderFunction_DebugDataAiInfo(int x, int y, int width, int height) +{ + MACRO_CALL_MEMBER(OpenSHC::AI::AICState_Func::renderDebugDataAiInfo, DAT_AICState::ptr)(x, y, width, height); +} + +} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataCurrentPlayerData.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataCurrentPlayerData.cpp new file mode 100644 index 000000000..64c214081 --- /dev/null +++ b/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataCurrentPlayerData.cpp @@ -0,0 +1,15 @@ +#include "OpenSHC/Game/GameStateStructures.func.hpp" +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_GameState.hpp" + +namespace OpenSHC { + +// FUNCTION: STRONGHOLDCRUSADER 0x004AAA40 +void UI::MenuModalRenderFunction_DebugDataCurrentPlayerData(int x, int y, int width, int height) +{ + MACRO_CALL_MEMBER(OpenSHC::Game::GameStateStructures_Func::renderDebugDataCurrentPlayerData, DAT_GameState::ptr)( + x, y, width, height); +} + +} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataMapData.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataMapData.cpp new file mode 100644 index 000000000..f41fbbc5b --- /dev/null +++ b/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataMapData.cpp @@ -0,0 +1,15 @@ +#include "OpenSHC/Map/WildlifeState.func.hpp" +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_WildlifeState.hpp" + +namespace OpenSHC { + +// FUNCTION: STRONGHOLDCRUSADER 0x004AAB20 +void UI::MenuModalRenderFunction_DebugDataMapData(int x, int y, int width, int height) +{ + MACRO_CALL_MEMBER(OpenSHC::Map::WildlifeState_Func::renderDebugDataMapData, DAT_WildlifeState::ptr)( + x, y, width, height); +} + +} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataMousePointing.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataMousePointing.cpp new file mode 100644 index 000000000..ed9f71800 --- /dev/null +++ b/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataMousePointing.cpp @@ -0,0 +1,15 @@ +#include "OpenSHC/Rendering/ViewportRenderState.func.hpp" +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_ViewportRenderState.hpp" + +namespace OpenSHC { + +// FUNCTION: STRONGHOLDCRUSADER 0x004AAAC0 +void UI::MenuModalRenderFunction_DebugDataMousePointing(int x, int y, int width, int height) +{ + MACRO_CALL_MEMBER(OpenSHC::Rendering::ViewportRenderState_Func::renderDebugDataMousePointing, + DAT_ViewportRenderState::ptr)(x, y, width, height); +} + +} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataNetwork.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataNetwork.cpp new file mode 100644 index 000000000..761b2c2c0 --- /dev/null +++ b/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataNetwork.cpp @@ -0,0 +1,15 @@ +#include "OpenSHC/Synchrony/GameSynchronyState.func.hpp" +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" + +namespace OpenSHC { + +// FUNCTION: STRONGHOLDCRUSADER 0x004AAAE0 +void UI::MenuModalRenderFunction_DebugDataNetwork(int x, int y, int width, int height) +{ + MACRO_CALL_MEMBER(OpenSHC::Synchrony::GameSynchronyState_Func::renderDebugDataNetwork, DAT_GameSynchronyState::ptr)( + x, y, width, height); +} + +} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataSplitInfo.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataSplitInfo.cpp new file mode 100644 index 000000000..d38f30843 --- /dev/null +++ b/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataSplitInfo.cpp @@ -0,0 +1,15 @@ +#include "OpenSHC/Synchrony/GameSynchronyState.func.hpp" +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" + +namespace OpenSHC { + +// FUNCTION: STRONGHOLDCRUSADER 0x004AAB00 +void UI::MenuModalRenderFunction_DebugDataSplitInfo(int x, int y, int width, int height) +{ + MACRO_CALL_MEMBER(OpenSHC::Synchrony::GameSynchronyState_Func::renderDebugDataSplitInfo, + DAT_GameSynchronyState::ptr)(x, y, width, height); +} + +} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataUnitData.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataUnitData.cpp new file mode 100644 index 000000000..3fac233d4 --- /dev/null +++ b/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataUnitData.cpp @@ -0,0 +1,15 @@ +#include "OpenSHC/Map/Units/UnitsState.func.hpp" +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_UnitsState.hpp" + +namespace OpenSHC { + +// FUNCTION: STRONGHOLDCRUSADER 0x004AAA80 +void UI::MenuModalRenderFunction_DebugDataUnitData(int x, int y, int width, int height) +{ + MACRO_CALL_MEMBER(OpenSHC::Map::Units::UnitsState_Func::renderDebugDataUnitData, DAT_UnitsState::ptr)( + x, y, width, height); +} + +} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataZoneDataUnk.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataZoneDataUnk.cpp new file mode 100644 index 000000000..5f2f6df59 --- /dev/null +++ b/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataZoneDataUnk.cpp @@ -0,0 +1,15 @@ +#include "OpenSHC/Map/Units/TroopValueState.func.hpp" +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_TroopValueState.hpp" + +namespace OpenSHC { + +// FUNCTION: STRONGHOLDCRUSADER 0x004AAAA0 +void UI::MenuModalRenderFunction_DebugDataZoneDataUnk(int x, int y, int width, int height) +{ + MACRO_CALL_MEMBER(OpenSHC::Map::Units::TroopValueState_Func::renderAttackInfoDebugOverlay, + DAT_TroopValueState::ptr)(x, y, width, height); +} + +} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_DisableTroops.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_DisableTroops.cpp new file mode 100644 index 000000000..94d6652a1 --- /dev/null +++ b/src/OpenSHC/UI/MenuModalRenderFunction_DisableTroops.cpp @@ -0,0 +1,16 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" + +namespace OpenSHC { + +// FUNCTION: STRONGHOLDCRUSADER 0x004ABCB0 +void UI::MenuModalRenderFunction_DisableTroops(int x, int y, int width, int height) +{ + + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)( + 199, 0xbc, x, y, width); +} + +} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_DisableWeapon.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_DisableWeapon.cpp new file mode 100644 index 000000000..bda815a4f --- /dev/null +++ b/src/OpenSHC/UI/MenuModalRenderFunction_DisableWeapon.cpp @@ -0,0 +1,16 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" + +namespace OpenSHC { + +// FUNCTION: STRONGHOLDCRUSADER 0x004ABCE0 +void UI::MenuModalRenderFunction_DisableWeapon(int x, int y, int width, int height) +{ + + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)( + 199, 0xbd, x, y, width); +} + +} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_DisplayAiLordMessage.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_DisplayAiLordMessage.cpp new file mode 100644 index 000000000..bf1581db0 --- /dev/null +++ b/src/OpenSHC/UI/MenuModalRenderFunction_DisplayAiLordMessage.cpp @@ -0,0 +1,14 @@ +#include "OpenSHC/Rendering/Bink/AIMessageQueue.func.hpp" +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_VideoBikQueue.hpp" + +namespace OpenSHC { + +// FUNCTION: STRONGHOLDCRUSADER 0x004AB440 +void UI::MenuModalRenderFunction_DisplayAiLordMessage(int x, int y, int width, int height) +{ + MACRO_CALL_MEMBER(OpenSHC::Rendering::Bink::AIMessageQueue_Func::playAiLordMessage, DAT_VideoBikQueue::ptr)(x, y); +} + +} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_EnterTitleOnGameStart.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_EnterTitleOnGameStart.cpp new file mode 100644 index 000000000..429c30163 --- /dev/null +++ b/src/OpenSHC/UI/MenuModalRenderFunction_EnterTitleOnGameStart.cpp @@ -0,0 +1,16 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" + +namespace OpenSHC { + +// FUNCTION: STRONGHOLDCRUSADER 0x00491BF0 +void UI::MenuModalRenderFunction_EnterTitleOnGameStart(int x, int y, int width, int height) +{ + + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)( + 5, 6, x, y, width); +} + +} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_GameplayOptions.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_GameplayOptions.cpp new file mode 100644 index 000000000..dccda1846 --- /dev/null +++ b/src/OpenSHC/UI/MenuModalRenderFunction_GameplayOptions.cpp @@ -0,0 +1,16 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" + +namespace OpenSHC { + +// FUNCTION: STRONGHOLDCRUSADER 0x00491E80 +void UI::MenuModalRenderFunction_GameplayOptions(int x, int y, int width, int height) +{ + + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)( + 0x4a, 0x19, x, y, width); +} + +} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_NetworkOptions.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_NetworkOptions.cpp new file mode 100644 index 000000000..6aae9a1c5 --- /dev/null +++ b/src/OpenSHC/UI/MenuModalRenderFunction_NetworkOptions.cpp @@ -0,0 +1,16 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" + +namespace OpenSHC { + +// FUNCTION: STRONGHOLDCRUSADER 0x00492A60 +void UI::MenuModalRenderFunction_NetworkOptions(int x, int y, int width, int height) +{ + + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)( + 0x4a, 6, x, y, width); +} + +} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_OnlineQuitGame.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_OnlineQuitGame.cpp new file mode 100644 index 000000000..8b53044bf --- /dev/null +++ b/src/OpenSHC/UI/MenuModalRenderFunction_OnlineQuitGame.cpp @@ -0,0 +1,16 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" + +namespace OpenSHC { + +// FUNCTION: STRONGHOLDCRUSADER 0x004937B0 +void UI::MenuModalRenderFunction_OnlineQuitGame(int x, int y, int width, int height) +{ + + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)( + 0x4a, 7, x, y, width); +} + +} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_OptionsMenu.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_OptionsMenu.cpp new file mode 100644 index 000000000..e27b9532e --- /dev/null +++ b/src/OpenSHC/UI/MenuModalRenderFunction_OptionsMenu.cpp @@ -0,0 +1,16 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" + +namespace OpenSHC { + +// FUNCTION: STRONGHOLDCRUSADER 0x00491810 +void UI::MenuModalRenderFunction_OptionsMenu(int x, int y, int width, int height) +{ + + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)( + 0x4a, 1, x, y, width); +} + +} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_SkirmishConnectionOptions.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_SkirmishConnectionOptions.cpp new file mode 100644 index 000000000..e9e0e441d --- /dev/null +++ b/src/OpenSHC/UI/MenuModalRenderFunction_SkirmishConnectionOptions.cpp @@ -0,0 +1,16 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" + +namespace OpenSHC { + +// FUNCTION: STRONGHOLDCRUSADER 0x004ABE50 +void UI::MenuModalRenderFunction_SkirmishConnectionOptions(int x, int y, int width, int height) +{ + + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)( + 0x4f, 0x5d, x, y, width); +} + +} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_SkirmishPlayOptions.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_SkirmishPlayOptions.cpp new file mode 100644 index 000000000..1fe4e9a9d --- /dev/null +++ b/src/OpenSHC/UI/MenuModalRenderFunction_SkirmishPlayOptions.cpp @@ -0,0 +1,16 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" + +namespace OpenSHC { + +// FUNCTION: STRONGHOLDCRUSADER 0x004ABE80 +void UI::MenuModalRenderFunction_SkirmishPlayOptions(int x, int y, int width, int height) +{ + + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)( + 0x4f, 0x67, x, y, width); +} + +} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_SoundOptions.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_SoundOptions.cpp new file mode 100644 index 000000000..4f603e2cd --- /dev/null +++ b/src/OpenSHC/UI/MenuModalRenderFunction_SoundOptions.cpp @@ -0,0 +1,16 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" + +namespace OpenSHC { + +// FUNCTION: STRONGHOLDCRUSADER 0x00492660 +void UI::MenuModalRenderFunction_SoundOptions(int x, int y, int width, int height) +{ + + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)( + 0x4a, 5, x, y, width); +} + +} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_StartGoods.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_StartGoods.cpp new file mode 100644 index 000000000..3c5cbe1c4 --- /dev/null +++ b/src/OpenSHC/UI/MenuModalRenderFunction_StartGoods.cpp @@ -0,0 +1,16 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" + +namespace OpenSHC { + +// FUNCTION: STRONGHOLDCRUSADER 0x004AB4E0 +void UI::MenuModalRenderFunction_StartGoods(int x, int y, int width, int height) +{ + + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)( + 199, 0x29, x, y, width); +} + +} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_TextEditor.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_TextEditor.cpp new file mode 100644 index 000000000..ee70d322c --- /dev/null +++ b/src/OpenSHC/UI/MenuModalRenderFunction_TextEditor.cpp @@ -0,0 +1,14 @@ +#include "OpenSHC/Text/TextEditorState.func.hpp" +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_TextEditorState.hpp" + +namespace OpenSHC { + +// FUNCTION: STRONGHOLDCRUSADER 0x004AAB40 +void UI::MenuModalRenderFunction_TextEditor(int x, int y, int width, int height) +{ + MACRO_CALL_MEMBER(OpenSHC::Text::TextEditorState_Func::setTextRenderingLogic, DAT_TextEditorState::ptr)(); +} + +} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_TraderSettings.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_TraderSettings.cpp new file mode 100644 index 000000000..dba6d0e7b --- /dev/null +++ b/src/OpenSHC/UI/MenuModalRenderFunction_TraderSettings.cpp @@ -0,0 +1,16 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" + +namespace OpenSHC { + +// FUNCTION: STRONGHOLDCRUSADER 0x004AB4B0 +void UI::MenuModalRenderFunction_TraderSettings(int x, int y, int width, int height) +{ + + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)( + 199, 0x26, x, y, width); +} + +} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_TriggerEvent.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_TriggerEvent.cpp new file mode 100644 index 000000000..e7a23a23e --- /dev/null +++ b/src/OpenSHC/UI/MenuModalRenderFunction_TriggerEvent.cpp @@ -0,0 +1,16 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" + +namespace OpenSHC { + +// FUNCTION: STRONGHOLDCRUSADER 0x004AC250 +void UI::MenuModalRenderFunction_TriggerEvent(int x, int y, int width, int height) +{ + + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)( + 199, 0x17, x, y, width); +} + +} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_TutorialBox_Thunk.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_TutorialBox_Thunk.cpp new file mode 100644 index 000000000..153d2a1b7 --- /dev/null +++ b/src/OpenSHC/UI/MenuModalRenderFunction_TutorialBox_Thunk.cpp @@ -0,0 +1,15 @@ + + +#include "OpenSHC/UI.func.hpp" + +namespace OpenSHC { +namespace UI { + + // FUNCTION: STRONGHOLDCRUSADER 0x004abd10 + void MenuModalRenderFunction_TutorialBox_Thunk(int x, int y, int width, int height) + { + MACRO_CALL(UI_Func::MenuModalRenderFunction_TutorialBox)(x, y, width, height); + } + +} // namespace UI +} // namespace OpenSHC diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_UnusedSiegeAttackingForceUnk.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_UnusedSiegeAttackingForceUnk.cpp new file mode 100644 index 000000000..55722fb27 --- /dev/null +++ b/src/OpenSHC/UI/MenuModalRenderFunction_UnusedSiegeAttackingForceUnk.cpp @@ -0,0 +1,16 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" + +namespace OpenSHC { + +// FUNCTION: STRONGHOLDCRUSADER 0x004AB510 +void UI::MenuModalRenderFunction_UnusedSiegeAttackingForceUnk(int x, int y, int width, int height) +{ + + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)( + 199, 0xa4, x, y, width); +} + +} diff --git a/src/OpenSHC/UI/MenuTextInputState/clearModalDialog2to6.cpp b/src/OpenSHC/UI/MenuTextInputState/clearModalDialog2to6.cpp new file mode 100644 index 000000000..6c4ae6b24 --- /dev/null +++ b/src/OpenSHC/UI/MenuTextInputState/clearModalDialog2to6.cpp @@ -0,0 +1,18 @@ +#include "OpenSHC/UI/MenuTextInputState.hpp" + +namespace OpenSHC { + +namespace UI { + + // FUNCTION: STRONGHOLDCRUSADER 0x00491730 + void MenuTextInputState::clearModalDialog2to6() + { + this->modalDialog_2 = 0; + this->modalDialog_3 = 0; + this->modalDialog_4 = 0; + this->modalDialog_5 = 0; + this->modalDialog_6 = 0; + } +} + +} diff --git a/src/OpenSHC/UI/MenuViews/CampaignUnk/MenuView_CampaignUnk_DoEveryFrame.cpp b/src/OpenSHC/UI/MenuViews/CampaignUnk/MenuView_CampaignUnk_DoEveryFrame.cpp new file mode 100644 index 000000000..939f8aea4 --- /dev/null +++ b/src/OpenSHC/UI/MenuViews/CampaignUnk/MenuView_CampaignUnk_DoEveryFrame.cpp @@ -0,0 +1,34 @@ +#include "OpenSHC/Game/GameCore.func.hpp" +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Enums/MenuViewType.hpp" + +#include "OpenSHC/Globals/DAT_GameCore.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuViews { + namespace CampaignUnk { + + using OpenSHC::UI::Enums::MenuViewType; + + // FUNCTION: STRONGHOLDCRUSADER 0x004D6EF0 + void MenuView_CampaignUnk_DoEveryFrame() + { + int iVar1; + + iVar1 = MACRO_CALL(OpenSHC::UI_Func::TicksSinceCounterStart)(); + if (iVar1 != 0) { + if (DAT_GameCore::instance.missionNumber1to20 == 1) { + MACRO_CALL_MEMBER(OpenSHC::Game::GameCore_Func::switchToMenuView, DAT_GameCore::ptr)( + OpenSHC::UI::Enums::MVT_SCENARIO_DESCRIPTION, 0); + return; + } + MACRO_CALL_MEMBER(OpenSHC::Game::GameCore_Func::switchToMenuView, DAT_GameCore::ptr)( + OpenSHC::UI::Enums::MVT_UNKNOWN_26_CAMPAIGN_RELATEDUnk, 0); + } + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuViews/CrusadeMissionIntro/MenuView_CrusadeMissionIntro_Prepare.cpp b/src/OpenSHC/UI/MenuViews/CrusadeMissionIntro/MenuView_CrusadeMissionIntro_Prepare.cpp new file mode 100644 index 000000000..763594aaf --- /dev/null +++ b/src/OpenSHC/UI/MenuViews/CrusadeMissionIntro/MenuView_CrusadeMissionIntro_Prepare.cpp @@ -0,0 +1,27 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Rendering/TextureRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_MissionDefinedData.hpp" +#include "OpenSHC/Globals/DAT_TextureRenderCoreObject.hpp" +#include "OpenSHC/Globals/INT_00eb9ae8.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuViews { + namespace CrusadeMissionIntro { + + // FUNCTION: STRONGHOLDCRUSADER 0x004D8AB0 + void MenuView_CrusadeMissionIntro_Prepare() + { + DAT_TextureRenderCoreObject::instance.totalLoadedGfx = 0; + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::TextureRenderCore_Func::loadGfxFile, + DAT_TextureRenderCoreObject::ptr)("skirmish_background.tgx"); + MACRO_CALL(OpenSHC::UI_Func::LoadTGX_shc_back)(); + INT_00eb9ae8::instance = 0; + DAT_MissionDefinedData::instance.field26_0xaf8 = true; + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuViews/EditScenario/MenuView_EditScenario_Prepare.cpp b/src/OpenSHC/UI/MenuViews/EditScenario/MenuView_EditScenario_Prepare.cpp new file mode 100644 index 000000000..0ae7c97ac --- /dev/null +++ b/src/OpenSHC/UI/MenuViews/EditScenario/MenuView_EditScenario_Prepare.cpp @@ -0,0 +1,29 @@ +#include "OpenSHC/Map/MapPropertiesState.func.hpp" +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Rendering/TextureRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_CopyOfScenarioGold.hpp" +#include "OpenSHC/Globals/DAT_GameState.hpp" +#include "OpenSHC/Globals/DAT_MapPropertiesState.hpp" +#include "OpenSHC/Globals/DAT_TextureRenderCoreObject.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuViews { + namespace EditScenario { + + // FUNCTION: STRONGHOLDCRUSADER 0x004BEC10 + void MenuView_EditScenario_Prepare() + { + DAT_TextureRenderCoreObject::instance.totalLoadedGfx = 0; + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::TextureRenderCore_Func::loadGfxFile, + DAT_TextureRenderCoreObject::ptr)("frontend_builder2.tgx"); + MACRO_CALL_MEMBER(OpenSHC::Map::MapPropertiesState_Func::updateEventYearsAndCommitBuildingAvailability, + DAT_MapPropertiesState::ptr)(); + DAT_CopyOfScenarioGold::instance = (int)DAT_GameState::instance.mapAndTime.scenarioGold; + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuViews/General/MenuView_General_DoEveryFrame_FirstGfxCentered.cpp b/src/OpenSHC/UI/MenuViews/General/MenuView_General_DoEveryFrame_FirstGfxCentered.cpp new file mode 100644 index 000000000..919540d6d --- /dev/null +++ b/src/OpenSHC/UI/MenuViews/General/MenuView_General_DoEveryFrame_FirstGfxCentered.cpp @@ -0,0 +1,28 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Rendering/TextureRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_TextureRenderCoreObject.hpp" +#include "OpenSHC/Globals/DAT_WindowAndDirectDraw.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuViews { + namespace General { + + // FUNCTION: STRONGHOLDCRUSADER 0x004271E0 + void MenuView_General_DoEveryFrame_FirstGfxCentered() + { + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::TextureRenderCore_Func::drawGfxOnFlaggedSurface, + DAT_TextureRenderCoreObject::ptr)(0, + (DAT_WindowAndDirectDraw::instance.resolutionX + - DAT_TextureRenderCoreObject::instance.loadedGfxArray[0].width) + / 2, + (DAT_WindowAndDirectDraw::instance.resolutionY + - DAT_TextureRenderCoreObject::instance.loadedGfxArray[0].height) + / 2); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuViews/General/MenuView_General_DoInitial_OnlySetMenuXY.cpp b/src/OpenSHC/UI/MenuViews/General/MenuView_General_DoInitial_OnlySetMenuXY.cpp new file mode 100644 index 000000000..3e50c5b34 --- /dev/null +++ b/src/OpenSHC/UI/MenuViews/General/MenuView_General_DoInitial_OnlySetMenuXY.cpp @@ -0,0 +1,30 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Menu.hpp" + +#include "OpenSHC/Globals/DAT_MenuHandlerState.hpp" +#include "OpenSHC/Globals/DAT_WindowAndDirectDraw.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuViews { + namespace General { + + using OpenSHC::UI::Menu; + + // FUNCTION: STRONGHOLDCRUSADER 0x004B8050 + void MenuView_General_DoInitial_OnlySetMenuXY() + { + Menu* pMVar1; + + DAT_MenuHandlerState::instance.y = DAT_WindowAndDirectDraw::instance.mainMenuBorderHeight; + DAT_MenuHandlerState::instance.x = DAT_WindowAndDirectDraw::instance.mainMenuBorderWidth; + pMVar1 = DAT_MenuHandlerState::instance.currentMenu; + (DAT_MenuHandlerState::instance.currentMenu)->xPosition + = DAT_WindowAndDirectDraw::instance.mainMenuBorderWidth; + pMVar1->yPosition = DAT_MenuHandlerState::instance.y; + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuViews/General/MenuView_General_Prepare_SwordShieldAndBorder.cpp b/src/OpenSHC/UI/MenuViews/General/MenuView_General_Prepare_SwordShieldAndBorder.cpp new file mode 100644 index 000000000..9f0aff892 --- /dev/null +++ b/src/OpenSHC/UI/MenuViews/General/MenuView_General_Prepare_SwordShieldAndBorder.cpp @@ -0,0 +1,26 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Rendering/TextureRenderCore.func.hpp" +#include "OpenSHC/string-literals.hpp" + +#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" +#include "OpenSHC/Globals/DAT_TextureRenderCoreObject.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuViews { + namespace General { + + // FUNCTION: STRONGHOLDCRUSADER 0x0042BB70 + void MenuView_General_Prepare_SwordShieldAndBorder() + { + DAT_GameSynchronyState::instance.field225_0x106ee4 = 0; + DAT_TextureRenderCoreObject::instance.totalLoadedGfx = 0; + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::TextureRenderCore_Func::loadGfxFile, + DAT_TextureRenderCoreObject::ptr)(s_frontend_combat3_tgx_005a2134); + MACRO_CALL(OpenSHC::UI_Func::LoadTGX_shc_back)(); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuViews/IntroLogos/MenuView_IntroLogos_DoInitial.cpp b/src/OpenSHC/UI/MenuViews/IntroLogos/MenuView_IntroLogos_DoInitial.cpp new file mode 100644 index 000000000..3414459bd --- /dev/null +++ b/src/OpenSHC/UI/MenuViews/IntroLogos/MenuView_IntroLogos_DoInitial.cpp @@ -0,0 +1,32 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Menu.hpp" + +#include "OpenSHC/Globals/DAT_IntroTimestamp.hpp" +#include "OpenSHC/Globals/DAT_MenuHandlerState.hpp" +#include "OpenSHC/Globals/DAT_WindowAndDirectDraw.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuViews { + namespace IntroLogos { + + using OpenSHC::UI::Menu; + + // FUNCTION: STRONGHOLDCRUSADER 0x00424770 + void MenuView_IntroLogos_DoInitial() + { + int y = DAT_WindowAndDirectDraw::instance.mainMenuBorderHeight; + int x = DAT_WindowAndDirectDraw::instance.mainMenuBorderWidth; + Menu* pMVar1 = DAT_MenuHandlerState::instance.currentMenu; + pMVar1->xPosition = x; + pMVar1->yPosition = y; + DAT_MenuHandlerState::instance.x = x; + DAT_MenuHandlerState::instance.y = y; + + DAT_IntroTimestamp::instance = timeGetTime(); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuViews/MapEditorLandscaping/MenuView_MapEditorLandscaping_Prepare.cpp b/src/OpenSHC/UI/MenuViews/MapEditorLandscaping/MenuView_MapEditorLandscaping_Prepare.cpp new file mode 100644 index 000000000..d60b389a4 --- /dev/null +++ b/src/OpenSHC/UI/MenuViews/MapEditorLandscaping/MenuView_MapEditorLandscaping_Prepare.cpp @@ -0,0 +1,27 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Helpers.func.hpp" +#include "OpenSHC/UI/Enums/DisplayElementID.hpp" + +#include "OpenSHC/Globals/DAT_WindowAndDirectDraw.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuViews { + namespace MapEditorLandscaping { + + using OpenSHC::UI::Enums::DisplayElementID; + + // FUNCTION: STRONGHOLDCRUSADER 0x00430CC0 + void MenuView_MapEditorLandscaping_Prepare() + { + DAT_WindowAndDirectDraw::instance.field37_0xdc = 1; + MACRO_CALL(OpenSHC::UI::Helpers_Func::CheckDisplayElementByIDAndSetForUnlimitedDisplay)( + OpenSHC::UI::Enums::DEID_PEOPLE_LEFT_TO_PLACE, 0); + MACRO_CALL(OpenSHC::UI::Helpers_Func::CheckDisplayElementByIDAndSetForUnlimitedDisplay)( + OpenSHC::UI::Enums::DEID_PLAYER_INFO_ON_HOVER, 1); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuViews/NewMapMapsize/MenuView_NewMapMapsize_Prepare.cpp b/src/OpenSHC/UI/MenuViews/NewMapMapsize/MenuView_NewMapMapsize_Prepare.cpp new file mode 100644 index 000000000..230e24cce --- /dev/null +++ b/src/OpenSHC/UI/MenuViews/NewMapMapsize/MenuView_NewMapMapsize_Prepare.cpp @@ -0,0 +1,24 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Rendering/TextureRenderCore.func.hpp" +#include "OpenSHC/string-literals.hpp" + +#include "OpenSHC/Globals/DAT_TextureRenderCoreObject.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuViews { + namespace NewMapMapsize { + + // FUNCTION: STRONGHOLDCRUSADER 0x0042F3D0 + void MenuView_NewMapMapsize_Prepare() + { + DAT_TextureRenderCoreObject::instance.totalLoadedGfx = 0; + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::TextureRenderCore_Func::loadGfxFile, + DAT_TextureRenderCoreObject::ptr)(s_frontend_builder2_tgx_005a206c); + MACRO_CALL(OpenSHC::UI_Func::LoadTGX_shc_back)(); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuViews/NewMapMaptype/MenuView_NewMapMaptype_Prepare.cpp b/src/OpenSHC/UI/MenuViews/NewMapMaptype/MenuView_NewMapMaptype_Prepare.cpp new file mode 100644 index 000000000..01241c8e2 --- /dev/null +++ b/src/OpenSHC/UI/MenuViews/NewMapMaptype/MenuView_NewMapMaptype_Prepare.cpp @@ -0,0 +1,26 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Rendering/TextureRenderCore.func.hpp" +#include "OpenSHC/string-literals.hpp" + +#include "OpenSHC/Globals/DAT_GameCore.hpp" +#include "OpenSHC/Globals/DAT_TextureRenderCoreObject.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuViews { + namespace NewMapMaptype { + + // FUNCTION: STRONGHOLDCRUSADER 0x0042EFE0 + void MenuView_NewMapMaptype_Prepare() + { + DAT_TextureRenderCoreObject::instance.totalLoadedGfx = 0; + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::TextureRenderCore_Func::loadGfxFile, + DAT_TextureRenderCoreObject::ptr)(s_frontend_builder_tgx_005a2084); + MACRO_CALL(OpenSHC::UI_Func::LoadTGX_shc_back)(); + DAT_GameCore::instance.mapU3EndInt = 0; + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuViews/RankingGames/MenuView_RankingGames_Prepare.cpp b/src/OpenSHC/UI/MenuViews/RankingGames/MenuView_RankingGames_Prepare.cpp new file mode 100644 index 000000000..886f4e189 --- /dev/null +++ b/src/OpenSHC/UI/MenuViews/RankingGames/MenuView_RankingGames_Prepare.cpp @@ -0,0 +1,30 @@ +#include "OpenSHC/Game/Skirmish.func.hpp" +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Rendering/TextureRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_00ed27a0.hpp" +#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" +#include "OpenSHC/Globals/DAT_StoredGameMode.hpp" +#include "OpenSHC/Globals/DAT_TextureRenderCoreObject.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuViews { + namespace RankingGames { + + // FUNCTION: STRONGHOLDCRUSADER 0x004D9700 + void MenuView_RankingGames_Prepare() + { + MACRO_CALL(OpenSHC::Game::Skirmish_Func::Skirmish_PrepareLeaderboardView)(); + DAT_00ed27a0::instance = 0; + DAT_TextureRenderCoreObject::instance.totalLoadedGfx = 0; + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::TextureRenderCore_Func::loadGfxFile, + DAT_TextureRenderCoreObject::ptr)("frontend_combat3.tgx"); + MACRO_CALL(OpenSHC::UI_Func::LoadTGX_shc_back)(); + DAT_StoredGameMode::instance = DAT_GameSynchronyState::instance.currentGameMode; + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuViews/Unknown26/MenuView_Unknown26_CampaignRelatedUnk_Prepare.cpp b/src/OpenSHC/UI/MenuViews/Unknown26/MenuView_Unknown26_CampaignRelatedUnk_Prepare.cpp new file mode 100644 index 000000000..3bd0dfe39 --- /dev/null +++ b/src/OpenSHC/UI/MenuViews/Unknown26/MenuView_Unknown26_CampaignRelatedUnk_Prepare.cpp @@ -0,0 +1,23 @@ +#include "OpenSHC/Rendering.func.hpp" +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_GameCore.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuViews { + namespace Unknown26 { + + // FUNCTION: STRONGHOLDCRUSADER 0x004DCC70 + void MenuView_Unknown26_CampaignRelatedUnk_Prepare() + { + MACRO_CALL(OpenSHC::UI_Func::ResetCredits)(); + MACRO_CALL(OpenSHC::UI_Func::BuildIntroLogoSequence)( + DAT_GameCore::instance.missionNumber1to20, (undefined4)((int)(DAT_GameCore::instance.section1066))); + MACRO_CALL(OpenSHC::Rendering_Func::TicksStartCounter)(); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuViews/UnusedChooseAvailableKeeps/MenuView_UnusedChooseAvailableKeeps_Prepare.cpp b/src/OpenSHC/UI/MenuViews/UnusedChooseAvailableKeeps/MenuView_UnusedChooseAvailableKeeps_Prepare.cpp new file mode 100644 index 000000000..4c891ad5e --- /dev/null +++ b/src/OpenSHC/UI/MenuViews/UnusedChooseAvailableKeeps/MenuView_UnusedChooseAvailableKeeps_Prepare.cpp @@ -0,0 +1,23 @@ +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_GameCore.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuViews { + namespace UnusedChooseAvailableKeeps { + + // FUNCTION: STRONGHOLDCRUSADER 0x0042FAA0 + void MenuView_UnusedChooseAvailableKeeps_Prepare() + { + DAT_GameCore::instance.mapU2MiddleBytes[0] = 1; + DAT_GameCore::instance.mapU2MiddleBytes[1] = 1; + DAT_GameCore::instance.mapU2MiddleBytes[2] = 1; + DAT_GameCore::instance.mapU2MiddleBytes[3] = 1; + DAT_GameCore::instance.mapU2MiddleBytes[4] = 1; + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuViews/UnusedDemoBuyItScreen/MenuView_UnusedDemoBuyItScreen_DoEveryFrame.cpp b/src/OpenSHC/UI/MenuViews/UnusedDemoBuyItScreen/MenuView_UnusedDemoBuyItScreen_DoEveryFrame.cpp new file mode 100644 index 000000000..05cccc4d9 --- /dev/null +++ b/src/OpenSHC/UI/MenuViews/UnusedDemoBuyItScreen/MenuView_UnusedDemoBuyItScreen_DoEveryFrame.cpp @@ -0,0 +1,30 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Rendering/TextureRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_TextureRenderCoreObject.hpp" +#include "OpenSHC/Globals/DAT_WindowAndDirectDraw.hpp" +#include "OpenSHC/Globals/INT_00b960e0.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuViews { + namespace UnusedDemoBuyItScreen { + + // FUNCTION: STRONGHOLDCRUSADER 0x004266A0 + void MenuView_UnusedDemoBuyItScreen_DoEveryFrame() + { + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::TextureRenderCore_Func::drawGfxOnFlaggedSurface, + DAT_TextureRenderCoreObject::ptr)(0, + (DAT_WindowAndDirectDraw::instance.resolutionX + - DAT_TextureRenderCoreObject::instance.loadedGfxArray[0].width) + / 2 + + INT_00b960e0::instance, + (DAT_WindowAndDirectDraw::instance.resolutionY + - DAT_TextureRenderCoreObject::instance.loadedGfxArray[0].height) + / 2); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuViews/UnusedExtremeAd/MenuView_UnusedExtremeAd_Prepare.cpp b/src/OpenSHC/UI/MenuViews/UnusedExtremeAd/MenuView_UnusedExtremeAd_Prepare.cpp new file mode 100644 index 000000000..1f3fe3e57 --- /dev/null +++ b/src/OpenSHC/UI/MenuViews/UnusedExtremeAd/MenuView_UnusedExtremeAd_Prepare.cpp @@ -0,0 +1,32 @@ +#include "OpenSHC/Rendering.func.hpp" +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuModalComposition.func.hpp" +#include "OpenSHC/UI/Enums/MenuModalType.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +#include "OpenSHC/Globals/DAT_00ed278c.hpp" +#include "OpenSHC/Globals/DAT_MenuModalComposition3.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuViews { + namespace UnusedExtremeAd { + + using OpenSHC::UI::Enums::MenuModalType; + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x004E1A20 + void MenuView_UnusedExtremeAd_Prepare() + { + MACRO_CALL(OpenSHC::UI_Func::ResetCredits)(); + MACRO_CALL_MEMBER(OpenSHC::UI::MenuModalComposition_Func::activateModalDialog, + DAT_MenuModalComposition3::ptr)(OpenSHC::UI::Enums::MMT_NONE, FALSE); + MACRO_CALL(OpenSHC::UI_Func::BuildExtremeDemoIntroScript)(); + MACRO_CALL(OpenSHC::Rendering_Func::TicksStartCounter)(); + DAT_00ed278c::instance = 0; + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuViews/UnusedHelpTextEditor/MenuView_UnusedHelpTextEditor_DoEveryFrame.cpp b/src/OpenSHC/UI/MenuViews/UnusedHelpTextEditor/MenuView_UnusedHelpTextEditor_DoEveryFrame.cpp new file mode 100644 index 000000000..a640d2258 --- /dev/null +++ b/src/OpenSHC/UI/MenuViews/UnusedHelpTextEditor/MenuView_UnusedHelpTextEditor_DoEveryFrame.cpp @@ -0,0 +1,21 @@ +#include "OpenSHC/Text/TextEditorState.func.hpp" +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_TextEditorState.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuViews { + namespace UnusedHelpTextEditor { + + // FUNCTION: STRONGHOLDCRUSADER 0x00440400 + void MenuView_UnusedHelpTextEditor_DoEveryFrame() + { + MACRO_CALL_MEMBER( + OpenSHC::Text::TextEditorState_Func::renderHelpDialogIfOpen, DAT_TextEditorState::ptr)(); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuViews/UnusedHelpTextEditor/MenuView_UnusedHelpTextEditor_Prepare.cpp b/src/OpenSHC/UI/MenuViews/UnusedHelpTextEditor/MenuView_UnusedHelpTextEditor_Prepare.cpp new file mode 100644 index 000000000..9acf8c811 --- /dev/null +++ b/src/OpenSHC/UI/MenuViews/UnusedHelpTextEditor/MenuView_UnusedHelpTextEditor_Prepare.cpp @@ -0,0 +1,33 @@ +#include "OpenSHC/Text/TextEditorState.func.hpp" +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Menu.hpp" + +#include "OpenSHC/Globals/DAT_MenuHandlerState.hpp" +#include "OpenSHC/Globals/DAT_TextEditorState.hpp" +#include "OpenSHC/Globals/DAT_WindowAndDirectDraw.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuViews { + namespace UnusedHelpTextEditor { + + using OpenSHC::UI::Menu; + + // FUNCTION: STRONGHOLDCRUSADER 0x004403D0 + void MenuView_UnusedHelpTextEditor_Prepare() + { + int y = DAT_WindowAndDirectDraw::instance.mainMenuBorderHeight; + int x = DAT_WindowAndDirectDraw::instance.mainMenuBorderWidth; + Menu* pMVar1 = DAT_MenuHandlerState::instance.currentMenu; + pMVar1->xPosition = x; + pMVar1->yPosition = y; + DAT_MenuHandlerState::instance.y = y; + DAT_MenuHandlerState::instance.x = x; + MACRO_CALL_MEMBER( + OpenSHC::Text::TextEditorState_Func::bltTextToScreenIfNeedBe, DAT_TextEditorState::ptr)(); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuViews/UnusedSomeMissionStartUnk/MenuView_UnusedSomeMissionStartUnk_Prepare.cpp b/src/OpenSHC/UI/MenuViews/UnusedSomeMissionStartUnk/MenuView_UnusedSomeMissionStartUnk_Prepare.cpp new file mode 100644 index 000000000..a72554a75 --- /dev/null +++ b/src/OpenSHC/UI/MenuViews/UnusedSomeMissionStartUnk/MenuView_UnusedSomeMissionStartUnk_Prepare.cpp @@ -0,0 +1,31 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Rendering/TextureRenderCore.func.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" +#include "OpenSHC/string-literals.hpp" + +#include "OpenSHC/Globals/DAT_GameCore.hpp" +#include "OpenSHC/Globals/DAT_TextureRenderCoreObject.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuViews { + namespace UnusedSomeMissionStartUnk { + + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x00426F80 + void MenuView_UnusedSomeMissionStartUnk_Prepare() + { + DAT_GameCore::instance.currentlyInGameUnk_0xa4 = FALSE; + DAT_TextureRenderCoreObject::instance.totalLoadedGfx = 0; + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::TextureRenderCore_Func::loadGfxFile, + DAT_TextureRenderCoreObject::ptr)(s_multi_background_tgx_005a211c); + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::TextureRenderCore_Func::loadGfxFile, + DAT_TextureRenderCoreObject::ptr)(s_gm_fly_tgx_005a2110); + MACRO_CALL(OpenSHC::UI_Func::LoadTGX_shc_back)(); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MinimapViewState/setMapPropertyDependingOnMapSize.cpp b/src/OpenSHC/UI/MinimapViewState/setMapPropertyDependingOnMapSize.cpp new file mode 100644 index 000000000..761a9c96b --- /dev/null +++ b/src/OpenSHC/UI/MinimapViewState/setMapPropertyDependingOnMapSize.cpp @@ -0,0 +1,21 @@ +#include "OpenSHC/UI/MinimapViewState.func.hpp" + +#include "OpenSHC/Globals/DAT_TileMapState.hpp" + +namespace OpenSHC { +namespace UI { + + // FUNCTION: STRONGHOLDCRUSADER 0x004B6640 + void MinimapViewState::setMapPropertyDependingOnMapSize(uint param_1, int param_2) + { + if (200 < DAT_TileMapState::instance.mapSize) { + MACRO_CALL_MEMBER(OpenSHC::UI::MinimapViewState_Func::renderMinimapTileStripWithLuminescence, this)( + 4, 2, 1, param_1, param_2); + return; + } + MACRO_CALL_MEMBER(OpenSHC::UI::MinimapViewState_Func::renderMinimapTileStripWithLuminescence, this)( + 4, 4, 2, param_1, param_2); + } + +} +} diff --git a/src/OpenSHC/UI/MinimapViewState/setTileColorsDependingOnMapSize.cpp b/src/OpenSHC/UI/MinimapViewState/setTileColorsDependingOnMapSize.cpp new file mode 100644 index 000000000..9e0acb096 --- /dev/null +++ b/src/OpenSHC/UI/MinimapViewState/setTileColorsDependingOnMapSize.cpp @@ -0,0 +1,20 @@ +#include "OpenSHC/UI/MinimapViewState.func.hpp" + +#include "OpenSHC/Globals/DAT_TileMapState.hpp" + +namespace OpenSHC { +namespace UI { + + // FUNCTION: STRONGHOLDCRUSADER 0x004B6680 + void MinimapViewState::setTileColorsDependingOnMapSize(int param_1, uint param_2) + { + if (200 < DAT_TileMapState::instance.mapSize) { + MACRO_CALL_MEMBER(OpenSHC::UI::MinimapViewState_Func::renderMinimapTileColors, this)( + 4, 2, 1, param_1, param_2); + return; + } + MACRO_CALL_MEMBER(OpenSHC::UI::MinimapViewState_Func::renderMinimapTileColors, this)(4, 4, 2, param_1, param_2); + } + +} +} diff --git a/src/OpenSHC/UI/MinimapViewState/triggerMinimapRedraw.cpp b/src/OpenSHC/UI/MinimapViewState/triggerMinimapRedraw.cpp new file mode 100644 index 000000000..9aa825b12 --- /dev/null +++ b/src/OpenSHC/UI/MinimapViewState/triggerMinimapRedraw.cpp @@ -0,0 +1,18 @@ +#include "OpenSHC/UI/MinimapViewState.func.hpp" + +namespace OpenSHC { +namespace UI { + + // FUNCTION: STRONGHOLDCRUSADER 0x004B5300 + void MinimapViewState::triggerMinimapRedraw() + { + if (this->field14_0x38 == 0) { + this->field13_0x34 = 0; + this->field14_0x38 = 2; + return; + } + this->field14_0x38 = 1; + } + +} +} diff --git a/src/OpenSHC/UI/PlayAMessageFromAI.cpp b/src/OpenSHC/UI/PlayAMessageFromAI.cpp new file mode 100644 index 000000000..80de20123 --- /dev/null +++ b/src/OpenSHC/UI/PlayAMessageFromAI.cpp @@ -0,0 +1,26 @@ +#include "OpenSHC/Audio/SFX/SFXState.func.hpp" +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_MissionAestheticsDefinedData.hpp" +#include "OpenSHC/Globals/DAT_SFXState.hpp" + +namespace OpenSHC { + +/* + Plays a WAV sound effect from the mission aesthetics data table. param_1 is the column index + (0-16) and param_2 is the row index (1-33). Bounds-checks both params and calls + SFXState::playWAVSFX with the resolved filename pointer. + + renamed by: Claude Sonnet 4.6 + */ + +// FUNCTION: STRONGHOLDCRUSADER 0x004B7F60 +void UI::PlayAMessageFromAI(uint param_1, int param_2) +{ + if ((param_1 < 0x11) && (param_2 - 1U < 0x21)) { + MACRO_CALL_MEMBER(OpenSHC::Audio::SFX::SFXState_Func::playWAVSFX, DAT_SFXState::ptr)( + (char const*)DAT_MissionAestheticsDefinedData::instance.field92_0x170[param_2 * 0x11 + param_1 + -0xc]); + } +} + +} diff --git a/src/OpenSHC/UI/Rendering/AlphaAndButtonSurface/freeMemory.cpp b/src/OpenSHC/UI/Rendering/AlphaAndButtonSurface/freeMemory.cpp new file mode 100644 index 000000000..6b4777c8d --- /dev/null +++ b/src/OpenSHC/UI/Rendering/AlphaAndButtonSurface/freeMemory.cpp @@ -0,0 +1,18 @@ +#include "OpenSHC/OS.func.hpp" +#include "OpenSHC/UI/Rendering/AlphaAndButtonSurface.func.hpp" + +namespace OpenSHC { +namespace UI { + namespace Rendering { + + // FUNCTION: STRONGHOLDCRUSADER 0x0045D0B0 + void AlphaAndButtonSurface::freeMemory() + { + if (this->surfacePtr != (ushort*)0x0) { + MACRO_CALL(OpenSHC::OS_Func::_free_base)(this->surfacePtr); + } + } + + } +} +} diff --git a/src/OpenSHC/UI/Rendering/AlphaAndButtonSurface/renderNonInteractingButtonBackground.cpp b/src/OpenSHC/UI/Rendering/AlphaAndButtonSurface/renderNonInteractingButtonBackground.cpp new file mode 100644 index 000000000..11821b291 --- /dev/null +++ b/src/OpenSHC/UI/Rendering/AlphaAndButtonSurface/renderNonInteractingButtonBackground.cpp @@ -0,0 +1,24 @@ +#include "OpenSHC/UI/Rendering/AlphaAndButtonSurface.func.hpp" +#include "OpenSHC/Rendering/Enums/RenderTarget.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +#include "OpenSHC/Globals/DAT_ButtonCurrentlyInteracting.hpp" + +namespace OpenSHC { +namespace UI { + namespace Rendering { + + using OpenSHC::Rendering::Enums::RenderTarget; + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x004246E0 + void AlphaAndButtonSurface::renderNonInteractingButtonBackground(int blendStrength) + { + DAT_ButtonCurrentlyInteracting::instance = FALSE; + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::AlphaAndButtonSurface_Func::renderBasicButton, this)( + blendStrength, OpenSHC::Rendering::Enums::RT_CONTEXT_BASED); + } + + } +} +} diff --git a/src/OpenSHC/UI/Rendering/ButtonGmData/getPictureNumberInGm.cpp b/src/OpenSHC/UI/Rendering/ButtonGmData/getPictureNumberInGm.cpp new file mode 100644 index 000000000..6189c7258 --- /dev/null +++ b/src/OpenSHC/UI/Rendering/ButtonGmData/getPictureNumberInGm.cpp @@ -0,0 +1,22 @@ +#include "../ButtonGmData.func.hpp" + +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +namespace OpenSHC { +namespace UI { + namespace Rendering { + + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x004630B0 + int ButtonGmData::getPictureNumberInGm(BOOLEnum buttonIsInteracting) + { + if (buttonIsInteracting != FALSE) { + return this->numOfAdditionalIconStates_0x8 + this->pictureInGm_0x4; + } + return this->pictureInGm_0x4; + } + + } +} +} diff --git a/src/OpenSHC/UI/Rendering/PencilRenderCore/setupPencilSurface.cpp b/src/OpenSHC/UI/Rendering/PencilRenderCore/setupPencilSurface.cpp new file mode 100644 index 000000000..ccdfa10e2 --- /dev/null +++ b/src/OpenSHC/UI/Rendering/PencilRenderCore/setupPencilSurface.cpp @@ -0,0 +1,30 @@ +#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" +#include "OpenSHC/Rendering/Enums/RenderTarget.hpp" + +#include "OpenSHC/Globals/DAT_WindowAndDirectDraw.hpp" + +namespace OpenSHC { +namespace UI { + namespace Rendering { + + using OpenSHC::Rendering::Enums::RenderTarget; + + // FUNCTION: STRONGHOLDCRUSADER 0x00468C50 + void PencilRenderCore::setupPencilSurface() + { + Ghidra::ushort* surface = DAT_WindowAndDirectDraw::instance.surfacePointer_mapGame; + if (this->surfaceTarget == OpenSHC::Rendering::Enums::RT_SCREEN_MENU) { + surface = DAT_WindowAndDirectDraw::instance.surfacePointer_screenMenu; + } + this->surfacePtr = surface; + + if (this->surfaceTarget != OpenSHC::Rendering::Enums::RT_SCREEN_MENU) { + this->horizontalByteSize = 8112; + return; + } + this->horizontalByteSize = DAT_WindowAndDirectDraw::instance.byteSizeOfOneHorizontalLine; + } + + } +} +} diff --git a/src/OpenSHC/UI/Rendering/RenderBuildingMenu_RecruitingBuilding.cpp b/src/OpenSHC/UI/Rendering/RenderBuildingMenu_RecruitingBuilding.cpp new file mode 100644 index 000000000..dbf86c5a2 --- /dev/null +++ b/src/OpenSHC/UI/Rendering/RenderBuildingMenu_RecruitingBuilding.cpp @@ -0,0 +1,17 @@ +#include "OpenSHC/Map/Buildings/BuildingsState.func.hpp" +#include "OpenSHC/UI/Rendering.func.hpp" + +#include "OpenSHC/Globals/DAT_BuildingsState.hpp" + +namespace OpenSHC { +namespace UI { + + // FUNCTION: STRONGHOLDCRUSADER 0x0043A8D0 + void Rendering::RenderBuildingMenu_RecruitingBuilding() + { + MACRO_CALL_MEMBER(OpenSHC::Map::Buildings::BuildingsState_Func::createEntityForAssemblyPointsForActiveTabType, + DAT_BuildingsState::ptr)(); + } + +} +} diff --git a/src/OpenSHC/UI/Rendering/RenderInGameChatDisplayElement.cpp b/src/OpenSHC/UI/Rendering/RenderInGameChatDisplayElement.cpp new file mode 100644 index 000000000..d2aa7267e --- /dev/null +++ b/src/OpenSHC/UI/Rendering/RenderInGameChatDisplayElement.cpp @@ -0,0 +1,17 @@ +#include "OpenSHC/Synchrony/GameSynchronyState.func.hpp" +#include "OpenSHC/UI/Rendering.func.hpp" + +#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" + +namespace OpenSHC { +namespace UI { + + // FUNCTION: STRONGHOLDCRUSADER 0x004AF800 + void Rendering::RenderInGameChatDisplayElement(int posX, int posY, DWORD elementState) + { + MACRO_CALL_MEMBER(OpenSHC::Synchrony::GameSynchronyState_Func::renderInGameChat, DAT_GameSynchronyState::ptr)( + posX, posY, elementState); + } + +} +} diff --git a/src/OpenSHC/UI/Rendering/RenderMenuGfxHelper.cpp b/src/OpenSHC/UI/Rendering/RenderMenuGfxHelper.cpp new file mode 100644 index 000000000..0eb49a393 --- /dev/null +++ b/src/OpenSHC/UI/Rendering/RenderMenuGfxHelper.cpp @@ -0,0 +1,19 @@ +#include "OpenSHC/UI/Rendering.func.hpp" +#include "OpenSHC/UI/Rendering/TextureRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_TextureRenderCoreObject.hpp" +#include "OpenSHC/Globals/DAT_WindowAndDirectDraw.hpp" + +namespace OpenSHC { +namespace UI { + + // FUNCTION: STRONGHOLDCRUSADER 0x004DA640 + void Rendering::RenderMenuGfxHelper(int gfxIndex, int x, int y, int blendStrength) + { + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::TextureRenderCore_Func::renderGfxTgxWithBlending, + DAT_TextureRenderCoreObject::ptr)(gfxIndex, DAT_WindowAndDirectDraw::instance.mainMenuBorderWidth + x, + DAT_WindowAndDirectDraw::instance.mainMenuBorderHeight + y, blendStrength); + } + +} +} diff --git a/src/OpenSHC/UI/Rendering/RenderNoRushDisplayElementUnk.cpp b/src/OpenSHC/UI/Rendering/RenderNoRushDisplayElementUnk.cpp new file mode 100644 index 000000000..a19661d4c --- /dev/null +++ b/src/OpenSHC/UI/Rendering/RenderNoRushDisplayElementUnk.cpp @@ -0,0 +1,141 @@ +#include "OpenSHC/Audio/SFX/SFXState.func.hpp" +#include "OpenSHC/Text/TextManager.func.hpp" +#include "OpenSHC/UI/Helpers.func.hpp" +#include "OpenSHC/UI/Rendering.func.hpp" +#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" +#include "OpenSHC/DE/SHCDE/eTextSections.hpp" +#include "OpenSHC/Rendering/Enums/RenderTarget.hpp" +#include "OpenSHC/Rendering/ScreenResolutionEnum.hpp" +#include "OpenSHC/Text/TextAlignment.hpp" +#include "OpenSHC/UI/Enums/DisplayElementID.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +#include "OpenSHC/Globals/COL_BLACK.hpp" +#include "OpenSHC/Globals/COL_DARK_LIME.hpp" +#include "OpenSHC/Globals/DAT_GameState.hpp" +#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" +#include "OpenSHC/Globals/DAT_SFXState.hpp" +#include "OpenSHC/Globals/DAT_TextManagerObject.hpp" +#include "OpenSHC/Globals/DAT_WindowAndDirectDraw.hpp" + +namespace OpenSHC { +namespace UI { + + using OpenSHC::DE::SHCDE::eTextSections; + using OpenSHC::Rendering::ScreenResolutionEnum; + using OpenSHC::Rendering::Enums::RenderTarget; + using OpenSHC::Text::TextAlignment; + using OpenSHC::UI::Enums::DisplayElementID; + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x004B20B0 + void Rendering::RenderNoRushDisplayElementUnk(int posX, int posY, DWORD elementState) + { + char* pcVar1; + int left; + int iVar2; + int iVar3; + int xParam; + int yParam; + TextAlignment alignment; + uint foregroundColor; + uint backgroundColor; + int fontSize; + BOOLEnum keepOffsetX; + int iVar4; + int blendStrength; + + if (DAT_GameState::instance.mapAndTime.skirmishNoRushTicks == 0) { + /* + Plays pa paam pa pa pa paam + */ + + MACRO_CALL_MEMBER(OpenSHC::Audio::SFX::SFXState_Func::playWAVSFX, DAT_SFXState::ptr)("battlehorn.wav"); + MACRO_CALL(OpenSHC::UI::Helpers_Func::CheckDisplayElementByIDAndSetForUnlimitedDisplay)( + OpenSHC::UI::Enums::DEID_NO_RUSH, 0); + return; + } + iVar4 = 0x12; + pcVar1 = MACRO_CALL_MEMBER(OpenSHC::Text::TextManager_Func::getTextStringInGroupAtOffset, + DAT_TextManagerObject::ptr)(OpenSHC::DE::SHCDE::TEXT_SKIRMISH_MISC, 7); + iVar4 = MACRO_CALL_MEMBER(OpenSHC::Text::TextManager_Func::computeTextWidth, DAT_TextManagerObject::ptr)( + pcVar1, iVar4); + iVar2 = posX + 800; + DAT_PencilRenderCore::instance.surfaceTarget = OpenSHC::Rendering::Enums::RT_MAP_GAME; + if (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1024x768) { + iVar2 = posX + 0x390; + goto LAB_004b21ab; + } + if (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1280x1024) { + LAB_004b212c: + iVar2 = posX + 0x230; + } else { + if (DAT_WindowAndDirectDraw::instance.currentGameResolution != OpenSHC::Rendering::SRE_1600x1200) { + if (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1280x720) + goto LAB_004b212c; + if (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1440x900) { + iVar2 = posX + 0x1e0; + goto LAB_004b21ab; + } + if ((DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1920x1080) + || (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1920x1200)) { + iVar2 = posX + 0xf0; + goto LAB_004b21ab; + } + if ((DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_2560x1440) + || (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_2560x1600)) { + iVar2 = posX + -0x50; + goto LAB_004b21ab; + } + if (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1366x768) { + iVar2 = posX + 0x205; + goto LAB_004b21ab; + } + if (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1680x1050) { + iVar2 = posX + 0x168; + goto LAB_004b21ab; + } + if (DAT_WindowAndDirectDraw::instance.currentGameResolution != OpenSHC::Rendering::SRE_1600x900) { + if (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1024x600) { + iVar2 = posX + 0x2b0; + } else if (DAT_WindowAndDirectDraw::instance.currentGameResolution + == OpenSHC::Rendering::SRE_1360x768) { + iVar2 = posX + 0x208; + } + goto LAB_004b21ab; + } + } + iVar2 = posX + 400; + } + LAB_004b21ab: + iVar3 = (iVar4 + 0x32) / 2; + iVar2 = iVar2 + (-0x12 - iVar3); + left = iVar2 - iVar3; + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawBlendedBlackBox, + DAT_PencilRenderCore::ptr)(left + -7, posY + -5, iVar3 + 5 + iVar2, posY + 0x1e, 0x10); + blendStrength = 0; + keepOffsetX = FALSE; + fontSize = 0x12; + backgroundColor = 0; + foregroundColor = 0xc2f0eb; + alignment = OpenSHC::Text::TTA_CENTER; + xParam = iVar2; + yParam = posY; + pcVar1 = MACRO_CALL_MEMBER(OpenSHC::Text::TextManager_Func::getTextStringInGroupAtOffset, + DAT_TextManagerObject::ptr)(OpenSHC::DE::SHCDE::TEXT_SKIRMISH_MISC, 7); + MACRO_CALL_MEMBER(OpenSHC::Text::TextManager_Func::renderInGameTextWithShadow, DAT_TextManagerObject::ptr)( + pcVar1, xParam, yParam, alignment, foregroundColor, backgroundColor, fontSize, keepOffsetX, blendStrength); + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawBorderBox, DAT_PencilRenderCore::ptr)( + left + -1, posY + 0x12, iVar3 + 1 + iVar2, posY + 0x18, (ushort)((int)(COL_BLACK::instance.shortValue))); + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawColorBox, DAT_PencilRenderCore::ptr)(left, + posY + 0x13, + ((DAT_GameState::instance.mapAndTime.skirmishNoRushTicks * (iVar4 + 0x32)) + / DAT_GameState::instance.mapAndTime.skirmishNoRushTicksLeft + - iVar3) + + iVar2, + posY + 0x17, (ushort)((int)(COL_DARK_LIME::instance.shortValue))); + DAT_PencilRenderCore::instance.surfaceTarget = OpenSHC::Rendering::Enums::RT_SCREEN_MENU; + } + +} +} diff --git a/src/OpenSHC/UI/Rendering/RenderNoTreeGrowthTextDisplayElement.cpp b/src/OpenSHC/UI/Rendering/RenderNoTreeGrowthTextDisplayElement.cpp new file mode 100644 index 000000000..541dafd0d --- /dev/null +++ b/src/OpenSHC/UI/Rendering/RenderNoTreeGrowthTextDisplayElement.cpp @@ -0,0 +1,23 @@ +#include "OpenSHC/Text/TextManager.func.hpp" +#include "OpenSHC/UI/Rendering.func.hpp" +#include "OpenSHC/Text/TextAlignment.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" +#include "OpenSHC/string-literals.hpp" + +#include "OpenSHC/Globals/DAT_TextManagerObject.hpp" + +namespace OpenSHC { +namespace UI { + + using OpenSHC::Text::TextAlignment; + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x004AFB00 + void Rendering::RenderNoTreeGrowthTextDisplayElement(int posX, int posY, DWORD elementState) + { + MACRO_CALL_MEMBER(OpenSHC::Text::TextManager_Func::renderInGameTextWithShadow, DAT_TextManagerObject::ptr)( + s_No_tree_growth_005a779c, posX, posY, OpenSHC::Text::TTA_LEFT, 0x80ff, 0, 0x11, FALSE, 0); + } + +} +} diff --git a/src/OpenSHC/UI/Rendering/RenderResourceMissing1DisplayElement.cpp b/src/OpenSHC/UI/Rendering/RenderResourceMissing1DisplayElement.cpp new file mode 100644 index 000000000..22cb9bc02 --- /dev/null +++ b/src/OpenSHC/UI/Rendering/RenderResourceMissing1DisplayElement.cpp @@ -0,0 +1,17 @@ +#include "OpenSHC/Audio/MissingResourceState.func.hpp" +#include "OpenSHC/UI/Rendering.func.hpp" + +#include "OpenSHC/Globals/DAT_MissingResourceState.hpp" + +namespace OpenSHC { +namespace UI { + + // FUNCTION: STRONGHOLDCRUSADER 0x004AF820 + void Rendering::RenderResourceMissing1DisplayElement(int posX, int posY, DWORD elementState) + { + MACRO_CALL_MEMBER(OpenSHC::Audio::MissingResourceState_Func::renderResourceMissingText, + DAT_MissingResourceState::ptr)(posX, posY, elementState, 1); + } + +} +} diff --git a/src/OpenSHC/UI/Rendering/RenderResourceMissing2DisplayElement.cpp b/src/OpenSHC/UI/Rendering/RenderResourceMissing2DisplayElement.cpp new file mode 100644 index 000000000..22dc85abc --- /dev/null +++ b/src/OpenSHC/UI/Rendering/RenderResourceMissing2DisplayElement.cpp @@ -0,0 +1,17 @@ +#include "OpenSHC/Audio/MissingResourceState.func.hpp" +#include "OpenSHC/UI/Rendering.func.hpp" + +#include "OpenSHC/Globals/DAT_MissingResourceState.hpp" + +namespace OpenSHC { +namespace UI { + + // FUNCTION: STRONGHOLDCRUSADER 0x004AF840 + void Rendering::RenderResourceMissing2DisplayElement(int posX, int posY, DWORD elementState) + { + MACRO_CALL_MEMBER(OpenSHC::Audio::MissingResourceState_Func::renderResourceMissingText, + DAT_MissingResourceState::ptr)(posX, posY, elementState, 2); + } + +} +} diff --git a/src/OpenSHC/UI/Rendering/RenderUnknownDisplayElement7.cpp b/src/OpenSHC/UI/Rendering/RenderUnknownDisplayElement7.cpp new file mode 100644 index 000000000..46a413ef4 --- /dev/null +++ b/src/OpenSHC/UI/Rendering/RenderUnknownDisplayElement7.cpp @@ -0,0 +1,24 @@ +#include "OpenSHC/Text/TextManager.func.hpp" +#include "OpenSHC/UI/Rendering.func.hpp" +#include "OpenSHC/Text/TextAlignment.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +#include "OpenSHC/Globals/DAT_TextManagerObject.hpp" +#include "OpenSHC/Globals/DAT_UnknownStopwatch.hpp" + +namespace OpenSHC { +namespace UI { + + using OpenSHC::Text::TextAlignment; + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x004AFA50 + void Rendering::RenderUnknownDisplayElement7(int posX, int posY, DWORD elementState) + { + MACRO_CALL_MEMBER(OpenSHC::Text::TextManager_Func::renderNumber2, DAT_TextManagerObject::ptr)( + DAT_UnknownStopwatch::instance.duration_0x0, posX, posY + 5, OpenSHC::Text::TTA_RIGHT, 0x80ff, 0, 0xf, + FALSE, 0); + } + +} +} diff --git a/src/OpenSHC/UI/Rendering/TextureRenderCore/CheckGfxResourceExists.cpp b/src/OpenSHC/UI/Rendering/TextureRenderCore/CheckGfxResourceExists.cpp new file mode 100644 index 000000000..36b666ba5 --- /dev/null +++ b/src/OpenSHC/UI/Rendering/TextureRenderCore/CheckGfxResourceExists.cpp @@ -0,0 +1,28 @@ +#include "../TextureRenderCore.func.hpp" + +#include "OpenSHC/IO/ResourceManager.func.hpp" +#include "OpenSHC/IO/FileResourceType.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +#include "OpenSHC/Globals/DAT_ResourceManager.hpp" + +namespace OpenSHC { +namespace UI { + namespace Rendering { + + using OpenSHC::IO::FileResourceType; + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x004548D0 + BOOLEnum TextureRenderCore::checkGfxResourceExists(char* param_1) + { + MACRO_CALL_MEMBER(OpenSHC::IO::ResourceManager_Func::resolveResourceFileName, DAT_ResourceManager::ptr)( + OpenSHC::IO::FRT_GFX, (char const*)((int)(param_1))); + return MACRO_CALL_MEMBER( + OpenSHC::IO::ResourceManager_Func::getCurrentResourceSize, DAT_ResourceManager::ptr)() + != 0; + } + + } +} +} diff --git a/src/OpenSHC/UI/Rendering/TextureRenderCore/checkIfGfxTgxStartsWithTransparentPixels.cpp b/src/OpenSHC/UI/Rendering/TextureRenderCore/checkIfGfxTgxStartsWithTransparentPixels.cpp new file mode 100644 index 000000000..12eaed2c7 --- /dev/null +++ b/src/OpenSHC/UI/Rendering/TextureRenderCore/checkIfGfxTgxStartsWithTransparentPixels.cpp @@ -0,0 +1,23 @@ + +#include "OpenSHC/IO/Graphics/GfxRef.hpp" +#include "OpenSHC/IO/Graphics/TgxToken.hpp" +#include "OpenSHC/UI/Rendering/TextureRenderCore.hpp" + +#include "OpenSHC/Globals/DAT_TextureRenderCoreObject.hpp" + +namespace OpenSHC { +namespace UI { + namespace Rendering { + + // FUNCTION: STRONGHOLDCRUSADER 0x004549C0 + BOOLEnum TextureRenderCore::checkIfGfxTgxStartsWithTransparentPixels(int gfxIndex) + { + // fixme: compiler picks different registers + return (*(byte*)(this->loadedGfxArray[gfxIndex].offsetInBuffer + 8 + (int)this->gmAndGfxImageDataBuffer) + & OpenSHC::IO::Graphics::TT_TGX_PIXEL_HEADER) + == OpenSHC::IO::Graphics::TT_TRANSPARENT_PIXELS; + } + + } +} +} diff --git a/src/OpenSHC/UI/Rendering/TextureRenderCore/restoreMapSurfaceHeightRangeFromTemporaryUnk.cpp b/src/OpenSHC/UI/Rendering/TextureRenderCore/restoreMapSurfaceHeightRangeFromTemporaryUnk.cpp new file mode 100644 index 000000000..c09122bc7 --- /dev/null +++ b/src/OpenSHC/UI/Rendering/TextureRenderCore/restoreMapSurfaceHeightRangeFromTemporaryUnk.cpp @@ -0,0 +1,16 @@ +#include "../TextureRenderCore.func.hpp" + +namespace OpenSHC { +namespace UI { + namespace Rendering { + + // FUNCTION: STRONGHOLDCRUSADER 0x0044CCF0 + void TextureRenderCore::restoreMapSurfaceHeightRangeFromTemporaryUnk() + { + this->mapGameSurfaceHeightRange.start = this->mapSurfaceRangeTemporaryUnk_0x16c864.start; + this->mapGameSurfaceHeightRange.end = this->mapSurfaceRangeTemporaryUnk_0x16c864.end; + } + + } +} +} diff --git a/src/OpenSHC/UI/Rendering/TextureRenderCore/setActiveMenuTabIndexToZero.cpp b/src/OpenSHC/UI/Rendering/TextureRenderCore/setActiveMenuTabIndexToZero.cpp new file mode 100644 index 000000000..8b472002d --- /dev/null +++ b/src/OpenSHC/UI/Rendering/TextureRenderCore/setActiveMenuTabIndexToZero.cpp @@ -0,0 +1,12 @@ +#include "../TextureRenderCore.func.hpp" + +namespace OpenSHC { +namespace UI { + namespace Rendering { + + // FUNCTION: STRONGHOLDCRUSADER 0x00454EF0 + void TextureRenderCore::setActiveMenuTabIndexToZero() { this->activeMenuTabIndex = 0; } + + } +} +} diff --git a/src/OpenSHC/UI/Rendering/TextureRenderCore/setMapSurfaceHeightRange.cpp b/src/OpenSHC/UI/Rendering/TextureRenderCore/setMapSurfaceHeightRange.cpp new file mode 100644 index 000000000..323bf36c0 --- /dev/null +++ b/src/OpenSHC/UI/Rendering/TextureRenderCore/setMapSurfaceHeightRange.cpp @@ -0,0 +1,15 @@ +#include "../TextureRenderCore.func.hpp" + +namespace OpenSHC { +namespace UI { + namespace Rendering { + + // FUNCTION: STRONGHOLDCRUSADER 0x0044cca0 + void TextureRenderCore::setMapSurfaceHeightRange(int start, int end) + { + this->mapGameSurfaceHeightRange.start = start; + this->mapGameSurfaceHeightRange.end = end; + } + } +} +} diff --git a/src/OpenSHC/UI/Rendering/TextureRenderCore/setMapSurfaceHeightRangeUnk.cpp b/src/OpenSHC/UI/Rendering/TextureRenderCore/setMapSurfaceHeightRangeUnk.cpp new file mode 100644 index 000000000..aadc8d8f8 --- /dev/null +++ b/src/OpenSHC/UI/Rendering/TextureRenderCore/setMapSurfaceHeightRangeUnk.cpp @@ -0,0 +1,16 @@ +#include "OpenSHC/UI/Rendering/TextureRenderCore.hpp" + +namespace OpenSHC { +namespace UI { + namespace Rendering { + + // FUNCTION: STRONGHOLDCRUSADER 0x0044ccc0 + void TextureRenderCore::setMapSurfaceHeightRangeUnk() + { + this->mapGameSurfaceHeightRange.start = 0; + this->mapGameSurfaceHeightRange.end = 0x81b; + } + + } // namespace Rendering +} // namespace UI +} // namespace OpenSHC diff --git a/src/OpenSHC/UI/Rendering/TextureRenderCore/setMenuTabIndexUnk.cpp b/src/OpenSHC/UI/Rendering/TextureRenderCore/setMenuTabIndexUnk.cpp new file mode 100644 index 000000000..e56bf0c5f --- /dev/null +++ b/src/OpenSHC/UI/Rendering/TextureRenderCore/setMenuTabIndexUnk.cpp @@ -0,0 +1,15 @@ +#include "../TextureRenderCore.func.hpp" + +namespace OpenSHC { +namespace UI { + namespace Rendering { + + // FUNCTION: STRONGHOLDCRUSADER 0x00454EE0 + void TextureRenderCore::setMenuTabIndexUnk(int indexToSetToMinusOne) + { + this->activeMenuTabIndex = indexToSetToMinusOne + 1; + } + + } +} +} diff --git a/src/OpenSHC/UI/Rendering/TextureRenderCore/setRenderingRect.cpp b/src/OpenSHC/UI/Rendering/TextureRenderCore/setRenderingRect.cpp new file mode 100644 index 000000000..fce1d8ae5 --- /dev/null +++ b/src/OpenSHC/UI/Rendering/TextureRenderCore/setRenderingRect.cpp @@ -0,0 +1,18 @@ +#include "../TextureRenderCore.func.hpp" + +namespace OpenSHC { +namespace UI { + namespace Rendering { + + // FUNCTION: STRONGHOLDCRUSADER 0x00454990 + void TextureRenderCore::setRenderingRect(int xPos, int yPos, int width, int heigth) + { + this->renderingRect_16c854.left = xPos; + this->renderingRect_16c854.top = yPos; + this->renderingRect_16c854.right = width; + this->renderingRect_16c854.bottom = heigth; + } + + } +} +} diff --git a/src/OpenSHC/UI/Rendering/TextureRenderCore/setRenderingRectToGameResolution.cpp b/src/OpenSHC/UI/Rendering/TextureRenderCore/setRenderingRectToGameResolution.cpp new file mode 100644 index 000000000..10c888072 --- /dev/null +++ b/src/OpenSHC/UI/Rendering/TextureRenderCore/setRenderingRectToGameResolution.cpp @@ -0,0 +1,20 @@ +#include "../TextureRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_WindowAndDirectDraw.hpp" + +namespace OpenSHC { +namespace UI { + namespace Rendering { + + // FUNCTION: STRONGHOLDCRUSADER 0x00454960 + void TextureRenderCore::setRenderingRectToGameResolution() + { + this->renderingRect_16c854.left = 0; + this->renderingRect_16c854.top = 0; + this->renderingRect_16c854.right = DAT_WindowAndDirectDraw::instance.resolutionX; + this->renderingRect_16c854.bottom = DAT_WindowAndDirectDraw::instance.resolutionY; + } + + } +} +} diff --git a/src/OpenSHC/UI/Rendering/TextureRenderCore/setScreenMenuSurfaceHeightRange.cpp b/src/OpenSHC/UI/Rendering/TextureRenderCore/setScreenMenuSurfaceHeightRange.cpp new file mode 100644 index 000000000..a85b82b99 --- /dev/null +++ b/src/OpenSHC/UI/Rendering/TextureRenderCore/setScreenMenuSurfaceHeightRange.cpp @@ -0,0 +1,16 @@ +#include "OpenSHC/UI/Rendering/TextureRenderCore.hpp" + +namespace OpenSHC { +namespace UI { + namespace Rendering { + + // FUNCTION: STRONGHOLDCRUSADER 0x0044cd10 + void TextureRenderCore::setScreenMenuSurfaceHeightRange(int start, int end) + { + this->screenMenuSurfaceHeightRange.start = start; + this->screenMenuSurfaceHeightRange.end = end; + } + + } +} +} diff --git a/src/OpenSHC/UI/Rendering/TextureRenderCore/setScreenMenuSurfaceHeightRangeToResolution.cpp b/src/OpenSHC/UI/Rendering/TextureRenderCore/setScreenMenuSurfaceHeightRangeToResolution.cpp new file mode 100644 index 000000000..042ff1659 --- /dev/null +++ b/src/OpenSHC/UI/Rendering/TextureRenderCore/setScreenMenuSurfaceHeightRangeToResolution.cpp @@ -0,0 +1,18 @@ +#include "OpenSHC/UI/Rendering/TextureRenderCore.hpp" + +#include "OpenSHC/Globals/DAT_WindowAndDirectDraw.hpp" + +namespace OpenSHC { +namespace UI { + namespace Rendering { + + // FUNCTION: STRONGHOLDCRUSADER 0x0044cd30 + void TextureRenderCore::setScreenMenuSurfaceHeightRangeToResolution() + { + this->screenMenuSurfaceHeightRange.start = 0; + this->screenMenuSurfaceHeightRange.end = DAT_WindowAndDirectDraw::ptr->resolutionY; + } + + } // namespace Rendering +} // namespace UI +} // namespace OpenSHC diff --git a/src/OpenSHC/UI/Rendering/TextureRenderCore/temporarySaveMapSurfaceHeightRangeUnk.cpp b/src/OpenSHC/UI/Rendering/TextureRenderCore/temporarySaveMapSurfaceHeightRangeUnk.cpp new file mode 100644 index 000000000..067aefdca --- /dev/null +++ b/src/OpenSHC/UI/Rendering/TextureRenderCore/temporarySaveMapSurfaceHeightRangeUnk.cpp @@ -0,0 +1,16 @@ +#include "../TextureRenderCore.func.hpp" + +namespace OpenSHC { +namespace UI { + namespace Rendering { + + // FUNCTION: STRONGHOLDCRUSADER 0x0044CCD0 + void TextureRenderCore::temporarySaveMapSurfaceHeightRangeUnk() + { + this->mapSurfaceRangeTemporaryUnk_0x16c864.start = this->mapGameSurfaceHeightRange.start; + this->mapSurfaceRangeTemporaryUnk_0x16c864.end = this->mapGameSurfaceHeightRange.end; + } + + } +} +} diff --git a/src/OpenSHC/UI/Rendering/TextureRenderCore/transformTgxCompressedImageToRGB565.cpp b/src/OpenSHC/UI/Rendering/TextureRenderCore/transformTgxCompressedImageToRGB565.cpp new file mode 100644 index 000000000..3000196a4 --- /dev/null +++ b/src/OpenSHC/UI/Rendering/TextureRenderCore/transformTgxCompressedImageToRGB565.cpp @@ -0,0 +1,22 @@ + +#include "../TextureRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_GMImageOffsets.hpp" +#include "OpenSHC/Globals/DAT_GMImageSizes.hpp" +#include "OpenSHC/Globals/DAT_TextureRenderCoreObject.hpp" + +namespace OpenSHC { +namespace UI { + namespace Rendering { + + // FUNCTION: STRONGHOLDCRUSADER 0x00455270 + void TextureRenderCore::transformTgxCompressedImageToRGB565(int imageIndex) + { + MACRO_CALL_MEMBER(TextureRenderCore_Func::transformTgxFromRGB555ToRGB565, this)( + (ushort*)(&(((byte*)this->gmProcessedImageData)[DAT_GMImageOffsets::instance[imageIndex]])), + DAT_GMImageSizes::instance[imageIndex]); + } + + } +} +} diff --git a/src/OpenSHC/UI/Rendering/TextureRenderCore/transformUncompressedImageToRGB565.cpp b/src/OpenSHC/UI/Rendering/TextureRenderCore/transformUncompressedImageToRGB565.cpp new file mode 100644 index 000000000..a2d6f218f --- /dev/null +++ b/src/OpenSHC/UI/Rendering/TextureRenderCore/transformUncompressedImageToRGB565.cpp @@ -0,0 +1,20 @@ + +#include "../TextureRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_GMImageOffsets.hpp" +#include "OpenSHC/Globals/DAT_GMImageSizes.hpp" + +namespace OpenSHC { +namespace UI { + namespace Rendering { + + // FUNCTION: STRONGHOLDCRUSADER 0x004552e0 + void TextureRenderCore::transformUncompressedImageToRGB565(int imageIndex) + { + MACRO_CALL_MEMBER(TextureRenderCore_Func::transformRawToRGB555To565, this)( + DAT_GMImageOffsets::instance[imageIndex], DAT_GMImageSizes::instance[imageIndex]); + } + + } +} +} diff --git a/src/OpenSHC/UI/Rendering/TextureRenderCore/transformUncompressedImageWithMarkerUnkToRGB565.cpp b/src/OpenSHC/UI/Rendering/TextureRenderCore/transformUncompressedImageWithMarkerUnkToRGB565.cpp new file mode 100644 index 000000000..d50600fa0 --- /dev/null +++ b/src/OpenSHC/UI/Rendering/TextureRenderCore/transformUncompressedImageWithMarkerUnkToRGB565.cpp @@ -0,0 +1,19 @@ +#include "../TextureRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_GMImageOffsets.hpp" +#include "OpenSHC/Globals/DAT_GMImageSizes.hpp" + +namespace OpenSHC { +namespace UI { + namespace Rendering { + + // FUNCTION: STRONGHOLDCRUSADER 0x00455250 + void TextureRenderCore::transformUncompressedImageWithMarkerUnkToRGB565(int imageIndex) + { + MACRO_CALL_MEMBER(TextureRenderCore_Func::transformRawWithMarkerUnkToRGB555To565, this)( + DAT_GMImageOffsets::instance[imageIndex], DAT_GMImageSizes::instance[imageIndex]); + } + + } +} +} diff --git a/src/OpenSHC/UI/Rendering/TogglePlayerPingDisplayElementUnk.cpp b/src/OpenSHC/UI/Rendering/TogglePlayerPingDisplayElementUnk.cpp new file mode 100644 index 000000000..0d27d5b91 --- /dev/null +++ b/src/OpenSHC/UI/Rendering/TogglePlayerPingDisplayElementUnk.cpp @@ -0,0 +1,23 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Rendering.func.hpp" +#include "OpenSHC/UI/DisplayElement.hpp" +#include "OpenSHC/UI/Enums/DisplayElementID.hpp" + +namespace OpenSHC { +namespace UI { + + using OpenSHC::UI::DisplayElement; + using OpenSHC::UI::Enums::DisplayElementID; + + // FUNCTION: STRONGHOLDCRUSADER 0x004AF6B0 + void Rendering::TogglePlayerPingDisplayElementUnk(DisplayElementID displayElementID, uint toggleValue) + { + DisplayElement* _displayElement = MACRO_CALL(OpenSHC::UI_Func::FindDisplayElementWithID)(displayElementID); + if (_displayElement != NULL) { + _displayElement->displayDuration_0x14 = -1; + _displayElement->elementStateUnk_0xc = _displayElement->elementStateUnk_0xc != 0 ? 0 : toggleValue; + } + } + +} +} diff --git a/src/OpenSHC/UI/Rendering/WindowAndDirectDraw/cleanDirectDraw.cpp b/src/OpenSHC/UI/Rendering/WindowAndDirectDraw/cleanDirectDraw.cpp new file mode 100644 index 000000000..1ea39b0d5 --- /dev/null +++ b/src/OpenSHC/UI/Rendering/WindowAndDirectDraw/cleanDirectDraw.cpp @@ -0,0 +1,20 @@ +#include "OpenSHC/UI/Rendering/WindowAndDirectDraw.func.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +namespace OpenSHC { +namespace UI { + namespace Rendering { + + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x0046F730 + void WindowAndDirectDraw::cleanDirectDraw() + { + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::WindowAndDirectDraw_Func::releaseSurfacesAndDirectDraw, this)( + TRUE); + this->drawingReady_0x0 = FALSE; + } + + } +} +} diff --git a/src/OpenSHC/UI/Rendering/WindowAndDirectDraw/finalizeDirectDrawShutdown.cpp b/src/OpenSHC/UI/Rendering/WindowAndDirectDraw/finalizeDirectDrawShutdown.cpp new file mode 100644 index 000000000..4dfd66007 --- /dev/null +++ b/src/OpenSHC/UI/Rendering/WindowAndDirectDraw/finalizeDirectDrawShutdown.cpp @@ -0,0 +1,20 @@ +#include "OpenSHC/UI/Rendering/WindowAndDirectDraw.func.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +namespace OpenSHC { +namespace UI { + namespace Rendering { + + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x00467E40 + void WindowAndDirectDraw::finalizeDirectDrawShutdown() + { + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::WindowAndDirectDraw_Func::releaseSurfacesAndDirectDraw, this)( + TRUE); + CoUninitialize(); + } + + } +} +} diff --git a/src/OpenSHC/UI/RestoreScenarioGold.cpp b/src/OpenSHC/UI/RestoreScenarioGold.cpp new file mode 100644 index 000000000..f1b24f8f8 --- /dev/null +++ b/src/OpenSHC/UI/RestoreScenarioGold.cpp @@ -0,0 +1,14 @@ +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_CopyOfScenarioGold.hpp" +#include "OpenSHC/Globals/DAT_GameState.hpp" + +namespace OpenSHC { + +// FUNCTION: STRONGHOLDCRUSADER 0x004B8210 +void UI::RestoreScenarioGold() +{ + DAT_GameState::instance.mapAndTime.scenarioGold = (short)DAT_CopyOfScenarioGold::instance; +} + +} diff --git a/src/OpenSHC/UI/SetActiveCreditsSequenceIndex.cpp b/src/OpenSHC/UI/SetActiveCreditsSequenceIndex.cpp new file mode 100644 index 000000000..fcee92dc6 --- /dev/null +++ b/src/OpenSHC/UI/SetActiveCreditsSequenceIndex.cpp @@ -0,0 +1,15 @@ +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_00ed3120.hpp" +#include "OpenSHC/Globals/DAT_00ed3124.hpp" + +namespace OpenSHC { + +// FUNCTION: STRONGHOLDCRUSADER 0x004D9270 +void __cdecl UI::SetActiveCreditsSequenceIndex(undefined4 param_1) +{ + DAT_00ed3124::instance = param_1; + DAT_00ed3120::instance = 0; +} + +} diff --git a/src/OpenSHC/UI/SetTutorialHintActiveWithTimestamp.cpp b/src/OpenSHC/UI/SetTutorialHintActiveWithTimestamp.cpp new file mode 100644 index 000000000..3e3052294 --- /dev/null +++ b/src/OpenSHC/UI/SetTutorialHintActiveWithTimestamp.cpp @@ -0,0 +1,15 @@ +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_00df5564.hpp" +#include "OpenSHC/Globals/DWORD_00df5568.hpp" + +namespace OpenSHC { + +// FUNCTION: STRONGHOLDCRUSADER 0x004BC770 +void UI::SetTutorialHintActiveWithTimestamp() +{ + DAT_00df5564::instance = 1; + DWORD_00df5568::instance = timeGetTime(); +} + +} diff --git a/src/OpenSHC/UI/ShowProgressBarSaveLoadDialog.cpp b/src/OpenSHC/UI/ShowProgressBarSaveLoadDialog.cpp new file mode 100644 index 000000000..87a3a5f49 --- /dev/null +++ b/src/OpenSHC/UI/ShowProgressBarSaveLoadDialog.cpp @@ -0,0 +1,22 @@ +#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuModalComposition.func.hpp" +#include "OpenSHC/UI/Enums/MenuModalType.hpp" + +#include "OpenSHC/Globals/DAT_MenuModalComposition1.hpp" +#include "OpenSHC/Globals/DAT_MenuTextInputState.hpp" + +namespace OpenSHC { + +using OpenSHC::UI::Enums::MenuModalType; + +// FUNCTION: STRONGHOLDCRUSADER 0x00495800 +void UI::ShowProgressBarSaveLoadDialog(int param_1) +{ + DAT_MenuTextInputState::instance.DAT_MenuOptionsActionParameter = (param_1 != 0 ? 0xe : 0) + 0x20; + MACRO_CALL_MEMBER(OpenSHC::UI::MenuModalComposition_Func::activateModalDialog2, DAT_MenuModalComposition1::ptr)( + OpenSHC::UI::Enums::MMT_PROGRESS_BAR_BOX); + DAT_MenuModalComposition1::instance.activeModalDialogID = Enums::MMT_PROGRESS_BAR_BOX; + MACRO_CALL(OpenSHC::UI_Func::MenuItemActionHandler_ProgressBarBox_LoadAndSaveGameButtonLogic)(0); +} + +} diff --git a/src/OpenSHC/UI/TacticalPowersFill.cpp b/src/OpenSHC/UI/TacticalPowersFill.cpp new file mode 100644 index 000000000..1497b2892 --- /dev/null +++ b/src/OpenSHC/UI/TacticalPowersFill.cpp @@ -0,0 +1,18 @@ +#include "OpenSHC/UI.func.hpp" + +#include "OpenSHC/Globals/DAT_MissionDefinedData.hpp" +#include "OpenSHC/Globals/DAT_TacticalPowersHelpTextDisplayBool.hpp" + +namespace OpenSHC { + +// FUNCTION: STRONGHOLDCRUSADER 0x004D9D90 +void UI::TacticalPowersFill() +{ + if ((DAT_TacticalPowersHelpTextDisplayBool::instance != '\0') + && (DAT_MissionDefinedData::instance.field39_0x1370 = DAT_MissionDefinedData::instance.field39_0x1370 + -1, + DAT_MissionDefinedData::instance.field39_0x1370 == 0)) { + DAT_TacticalPowersHelpTextDisplayBool::instance = '\0'; + } +} + +} diff --git a/src/OpenSHC/Util/Timing/Stopwatch/start.cpp b/src/OpenSHC/Util/Timing/Stopwatch/start.cpp new file mode 100644 index 000000000..c3a691974 --- /dev/null +++ b/src/OpenSHC/Util/Timing/Stopwatch/start.cpp @@ -0,0 +1,20 @@ +#include "OpenSHC/Util/Timing/Stopwatch.func.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +namespace OpenSHC { +namespace Util { + namespace Timing { + + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x0046CED0 + void Stopwatch::start() + { + DWORD _currentTime = timeGetTime(); + this->startTime_0x8 = _currentTime; + this->running_0x4 = TRUE; + } + + } +} +} diff --git a/src/OpenSHC/Util/Timing/Stopwatch/stop.cpp b/src/OpenSHC/Util/Timing/Stopwatch/stop.cpp new file mode 100644 index 000000000..139998789 --- /dev/null +++ b/src/OpenSHC/Util/Timing/Stopwatch/stop.cpp @@ -0,0 +1,25 @@ +#include "OpenSHC/Util/Timing/Stopwatch.func.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +namespace OpenSHC { +namespace Util { + namespace Timing { + + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x0046CEF0 + void Stopwatch::stop() + { + DWORD _currentTime; + + if (this->running_0x4 != FALSE) { + _currentTime = timeGetTime(); + this->stopTime_0xc = _currentTime; + this->running_0x4 = FALSE; + this->duration_0x0 = _currentTime - this->startTime_0x8; + } + } + + } +} +} From cab1107acaf64c956346505faa209a1ea4fc4194 Mon Sep 17 00:00:00 2001 From: Gynt Date: Thu, 24 Sep 2026 16:41:33 +0200 Subject: [PATCH 002/241] [OPENSHC]: repair simple-functions-set-1 sources after UI refactor - move UI functions from the removed OpenSHC/UI.func.hpp into their new namespaces/folders (MenuModals, DisplayElements, Credits, Helpers, ...) - remap *_Func references to the resolvers' current namespaces - fix return types/fields that no longer matched the generated headers - drop duplicate TribesState/LandscapeState constructor sources Co-Authored-By: Claude Opus 5.5 --- ...State.cpp => Construct_LandscapeState.cpp} | 2 +- .../isTreeAliveAndMatchingUID.cpp | 7 +- .../isMercRecruitableForBuildingType.cpp | 9 +- .../MapPropertiesState/mapHasCertainEvent.cpp | 24 ++- .../sumInvasionEventUnitCount.cpp | 16 +- .../Units/TribesState/addUnitToSelected.cpp | 9 +- .../TribesState/constructTribesState.cpp | 28 ---- .../Map/Units/TribesState/setCamelSpawnXY.cpp | 8 +- .../setWhetherTribeContainsAnyUnits.cpp | 11 +- .../TribesState/storeDeerXAndYinMapInfo.cpp | 8 +- .../TribesState/tribeCorrespondsWithUID.cpp | 7 +- .../attackInfoHasArch2Building.cpp | 8 +- .../TroopValueState/isAttackWaveComplete.cpp | 12 +- src/OpenSHC/Synchrony/ProgressBarRelated.cpp | 23 +-- ...eSpeedAndResourceLackDisplayElementUnk.cpp | 23 --- .../UI/AppendCreditsClearImageCommand.cpp | 17 -- src/OpenSHC/UI/AppendCreditsCommand.cpp | 17 -- .../UI/AppendCreditsListTerminator.cpp | 17 -- src/OpenSHC/UI/AppendCreditsPauseCommand.cpp | 17 -- .../UI/AppendCreditsSegmentEndCommand.cpp | 17 -- .../UI/AppendCreditsSoundStreamCommand.cpp | 21 --- .../RenderBuildingMenu_RecruitingBuilding.cpp | 21 +++ .../UI/CaptureCurrentTimeToUnknownTime01.cpp | 10 -- .../AppendCreditsClearImageCommand.cpp | 21 +++ .../UI/Credits/AppendCreditsCommand.cpp | 21 +++ .../Credits/AppendCreditsListTerminator.cpp | 21 +++ .../UI/Credits/AppendCreditsPauseCommand.cpp | 21 +++ .../AppendCreditsSegmentEndCommand.cpp | 21 +++ .../AppendCreditsSoundStreamCommand.cpp | 25 +++ .../Credits/SetActiveCreditsSequenceIndex.cpp | 19 +++ src/OpenSHC/UI/DisableMercPostPortraits.cpp | 10 -- ...eSpeedAndResourceLackDisplayElementUnk.cpp | 28 ++++ ...ayElementByIDAndSetForUnlimitedDisplay.cpp | 33 ++++ .../FindDisplayElementWithID.cpp | 26 +++ .../GetIfDisplayElementStateNotZero.cpp | 28 ++++ .../RenderInGameChatDisplayElement.cpp | 20 +++ .../RenderNoRushDisplayElementUnk.cpp | 149 ++++++++++++++++++ .../RenderNoTreeGrowthTextDisplayElement.cpp | 26 +++ .../RenderResourceMissing1DisplayElement.cpp | 20 +++ .../RenderResourceMissing2DisplayElement.cpp | 20 +++ .../RenderUnknownDisplayElement7.cpp | 27 ++++ .../TogglePlayerPingDisplayElementUnk.cpp | 26 +++ src/OpenSHC/UI/FindDisplayElementWithID.cpp | 22 --- .../CaptureCurrentTimeToUnknownTime01.cpp | 14 ++ ...ayElementByIDAndSetForUnlimitedDisplay.cpp | 31 ---- .../UI/Helpers/DisableMercPostPortraits.cpp | 14 ++ .../GetIfDisplayElementStateNotZero.cpp | 25 --- src/OpenSHC/UI/Helpers/LoadTGX_shc_back.cpp | 19 +++ src/OpenSHC/UI/Helpers/PlayAMessageFromAI.cpp | 30 ++++ .../UI/Helpers/RestoreScenarioGold.cpp | 18 +++ .../SetTutorialHintActiveWithTimestamp.cpp | 19 +++ .../Helpers/ShowProgressBarSaveLoadDialog.cpp | 28 ++++ src/OpenSHC/UI/Helpers/TacticalPowersFill.cpp | 23 +++ src/OpenSHC/UI/LoadTGX_shc_back.cpp | 15 -- .../UI/MenuItemFunction_General_Unknown.cpp | 10 -- ...r_BuildMenu_SomeKeepAndGranaryCheckUnk.cpp | 2 +- ...RenderFunction_BuildMenu_BuildingIcons.cpp | 11 +- ...uildMenu_BuildingKeepSubcategoryButton.cpp | 5 +- ...on_BuildMenu_BuildingSubcategoryButton.cpp | 5 +- ..._CurrentlySelectedTroopsDeselectHelper.cpp | 2 +- ...BuildingAndStatusMenu_ArmySwitchButton.cpp | 2 +- ...ngAndStatusMenu_BuildingHelpTextButton.cpp | 2 +- ...er_BuildingAndStatusMenu_BuildingSleep.cpp | 5 +- ...gAndStatusMenu_MarketMenuChangeButtons.cpp | 2 +- ...dingAndStatusMenu_OutpostUnitSelection.cpp | 2 +- ...atusMenu_PopularityMenuSwitchButtonUnk.cpp | 4 +- ...Menu_StopBuildingOrPeasantBinkPlayback.cpp | 2 +- ...r_BuildingAndStatusMenu_UnknownMin1Unk.cpp | 2 +- ...uildingAndStatusMenu_Unknown_Countdown.cpp | 2 +- ...ler_BuildingAndStatusMenu_Unknown_Min1.cpp | 2 +- ...ngAndStatusMenu_ArmyStatusSwitchButton.cpp | 5 +- ...sMenu_BarracksAndMercenaryPostHelpText.cpp | 5 +- ...ngAndStatusMenu_BuildingHelpTextButton.cpp | 5 +- ...dStatusMenu_PopularityMenuSwitchButton.cpp | 5 +- ...ActionHandler_Chat_SendMessageToPlayer.cpp | 2 +- ...enuItemActionHandler_Chat_TauntButtons.cpp | 2 +- ...eNetworkServiceProvider_ModemTableRows.cpp | 2 +- ...temActionHandler_DeleteGameRecord_Main.cpp | 2 +- ...emActionHandler_DisableArabTroops_Main.cpp | 2 +- ...emActionHandler_DisableEuroTroops_Main.cpp | 2 +- ...splayScenarioHelpText_AnotherButtonUnk.cpp | 5 +- ...onHandler_EnterTitleOnGameStart_Button.cpp | 2 +- ...NetworkSessions_EnumerateDPlaySessions.cpp | 2 +- ...ndler_FindingNetworkSessions_TableRows.cpp | 2 +- ...Handler_General_DisplayConditionalText.cpp | 2 +- ...RemoveConditionalTextOrReleaseHoverUnk.cpp | 2 +- ...MenuItemActionHandler_General_Unknown2.cpp | 2 +- .../MenuItemFunction_General_Unknown.cpp | 16 ++ ...nHandler_InGameMenu_UnknownBinkRelated.cpp | 2 +- ...derFunction_InGameMenu_MapEventIconUnk.cpp | 5 +- ...nuItemRenderFunction_LobbyMenu_Unknown.cpp | 2 +- ...nHandler_NetworkOptions_LeaveButtonUnk.cpp | 2 +- ...emRenderFunction_SaveLoadMap_Scrollbar.cpp | 2 +- ...temActionHandler_SaveMap_ReturnKeySave.cpp | 5 +- ...uItemRenderFunction_SelectCrusade_Main.cpp | 5 +- ...tionHandler_UnusedOldTitleMenu_General.cpp | 4 +- ...tionHandler_UnusedWinCondition_Options.cpp | 4 +- ...RenderFunction_CreateOrTriggerInvasion.cpp | 16 -- ...enuModalRenderFunction_DebugDataAiInfo.cpp | 14 -- ...derFunction_DebugDataCurrentPlayerData.cpp | 15 -- ...nuModalRenderFunction_DebugDataMapData.cpp | 15 -- ...lRenderFunction_DebugDataMousePointing.cpp | 15 -- ...nuModalRenderFunction_DebugDataNetwork.cpp | 15 -- ...ModalRenderFunction_DebugDataSplitInfo.cpp | 15 -- ...uModalRenderFunction_DebugDataUnitData.cpp | 15 -- ...dalRenderFunction_DebugDataZoneDataUnk.cpp | 15 -- .../MenuModalRenderFunction_DisableTroops.cpp | 16 -- .../MenuModalRenderFunction_DisableWeapon.cpp | 16 -- ...dalRenderFunction_DisplayAiLordMessage.cpp | 14 -- ...alRenderFunction_EnterTitleOnGameStart.cpp | 16 -- ...enuModalRenderFunction_GameplayOptions.cpp | 16 -- ...MenuModalRenderFunction_NetworkOptions.cpp | 16 -- ...MenuModalRenderFunction_OnlineQuitGame.cpp | 16 -- .../MenuModalRenderFunction_OptionsMenu.cpp | 16 -- ...nderFunction_SkirmishConnectionOptions.cpp | 16 -- ...odalRenderFunction_SkirmishPlayOptions.cpp | 16 -- .../MenuModalRenderFunction_SoundOptions.cpp | 16 -- .../UI/MenuModalRenderFunction_StartGoods.cpp | 16 -- .../UI/MenuModalRenderFunction_TextEditor.cpp | 14 -- ...MenuModalRenderFunction_TraderSettings.cpp | 16 -- .../MenuModalRenderFunction_TriggerEvent.cpp | 16 -- ...uModalRenderFunction_TutorialBox_Thunk.cpp | 15 -- ...rFunction_UnusedSiegeAttackingForceUnk.cpp | 16 -- ...RenderFunction_CreateOrTriggerInvasion.cpp | 22 +++ ...enuModalRenderFunction_DebugDataAiInfo.cpp | 21 +++ ...derFunction_DebugDataCurrentPlayerData.cpp | 21 +++ ...nuModalRenderFunction_DebugDataMapData.cpp | 21 +++ ...lRenderFunction_DebugDataMousePointing.cpp | 21 +++ ...nuModalRenderFunction_DebugDataNetwork.cpp | 21 +++ ...ModalRenderFunction_DebugDataSplitInfo.cpp | 21 +++ ...uModalRenderFunction_DebugDataUnitData.cpp | 21 +++ ...dalRenderFunction_DebugDataZoneDataUnk.cpp | 21 +++ .../MenuModalRenderFunction_DisableTroops.cpp | 22 +++ .../MenuModalRenderFunction_DisableWeapon.cpp | 22 +++ ...dalRenderFunction_DisplayAiLordMessage.cpp | 21 +++ ...alRenderFunction_EnterTitleOnGameStart.cpp | 22 +++ ...enuModalRenderFunction_GameplayOptions.cpp | 22 +++ ...MenuModalRenderFunction_NetworkOptions.cpp | 22 +++ ...MenuModalRenderFunction_OnlineQuitGame.cpp | 22 +++ .../MenuModalRenderFunction_OptionsMenu.cpp | 22 +++ ...nderFunction_SkirmishConnectionOptions.cpp | 22 +++ ...odalRenderFunction_SkirmishPlayOptions.cpp | 22 +++ .../MenuModalRenderFunction_SoundOptions.cpp | 22 +++ .../MenuModalRenderFunction_StartGoods.cpp | 22 +++ .../MenuModalRenderFunction_TextEditor.cpp | 21 +++ ...MenuModalRenderFunction_TraderSettings.cpp | 22 +++ .../MenuModalRenderFunction_TriggerEvent.cpp | 22 +++ ...uModalRenderFunction_TutorialBox_Thunk.cpp | 18 +++ ...rFunction_UnusedSiegeAttackingForceUnk.cpp | 22 +++ .../MenuView_CampaignUnk_DoEveryFrame.cpp | 5 +- .../MenuView_CrusadeMissionIntro_Prepare.cpp | 5 +- .../MenuView_EditScenario_Prepare.cpp | 2 +- ..._General_DoEveryFrame_FirstGfxCentered.cpp | 2 +- ...nuView_General_DoInitial_OnlySetMenuXY.cpp | 2 +- ...w_General_Prepare_SwordShieldAndBorder.cpp | 5 +- .../MenuView_IntroLogos_DoInitial.cpp | 2 +- .../MenuView_MapEditorLandscaping_Prepare.cpp | 7 +- .../MenuView_NewMapMapsize_Prepare.cpp | 5 +- .../MenuView_NewMapMaptype_Prepare.cpp | 5 +- .../MenuView_RankingGames_Prepare.cpp | 5 +- ...w_Unknown26_CampaignRelatedUnk_Prepare.cpp | 8 +- ...iew_UnusedChooseAvailableKeeps_Prepare.cpp | 2 +- ...iew_UnusedDemoBuyItScreen_DoEveryFrame.cpp | 2 +- .../MenuView_UnusedExtremeAd_Prepare.cpp | 8 +- ...View_UnusedHelpTextEditor_DoEveryFrame.cpp | 2 +- .../MenuView_UnusedHelpTextEditor_Prepare.cpp | 2 +- ...View_UnusedSomeMissionStartUnk_Prepare.cpp | 5 +- src/OpenSHC/UI/PlayAMessageFromAI.cpp | 26 --- .../RenderBuildingMenu_RecruitingBuilding.cpp | 17 -- .../RenderInGameChatDisplayElement.cpp | 17 -- .../RenderNoRushDisplayElementUnk.cpp | 141 ----------------- .../RenderNoTreeGrowthTextDisplayElement.cpp | 23 --- .../RenderResourceMissing1DisplayElement.cpp | 17 -- .../RenderResourceMissing2DisplayElement.cpp | 17 -- .../RenderUnknownDisplayElement7.cpp | 24 --- .../transformTgxCompressedImageToRGB565.cpp | 5 +- .../transformUncompressedImageToRGB565.cpp | 5 +- ...UncompressedImageWithMarkerUnkToRGB565.cpp | 6 +- .../TogglePlayerPingDisplayElementUnk.cpp | 23 --- src/OpenSHC/UI/RestoreScenarioGold.cpp | 14 -- .../UI/SetActiveCreditsSequenceIndex.cpp | 15 -- .../UI/SetTutorialHintActiveWithTimestamp.cpp | 15 -- .../UI/ShowProgressBarSaveLoadDialog.cpp | 22 --- src/OpenSHC/UI/TacticalPowersFill.cpp | 18 --- 184 files changed, 1508 insertions(+), 1239 deletions(-) rename src/OpenSHC/Map/LandscapeState/{constructLandscapeState.cpp => Construct_LandscapeState.cpp} (88%) delete mode 100644 src/OpenSHC/Map/Units/TribesState/constructTribesState.cpp delete mode 100644 src/OpenSHC/UI/ActivateGameSpeedAndResourceLackDisplayElementUnk.cpp delete mode 100644 src/OpenSHC/UI/AppendCreditsClearImageCommand.cpp delete mode 100644 src/OpenSHC/UI/AppendCreditsCommand.cpp delete mode 100644 src/OpenSHC/UI/AppendCreditsListTerminator.cpp delete mode 100644 src/OpenSHC/UI/AppendCreditsPauseCommand.cpp delete mode 100644 src/OpenSHC/UI/AppendCreditsSegmentEndCommand.cpp delete mode 100644 src/OpenSHC/UI/AppendCreditsSoundStreamCommand.cpp create mode 100644 src/OpenSHC/UI/BuildingMenus/RenderBuildingMenu_RecruitingBuilding.cpp delete mode 100644 src/OpenSHC/UI/CaptureCurrentTimeToUnknownTime01.cpp create mode 100644 src/OpenSHC/UI/Credits/AppendCreditsClearImageCommand.cpp create mode 100644 src/OpenSHC/UI/Credits/AppendCreditsCommand.cpp create mode 100644 src/OpenSHC/UI/Credits/AppendCreditsListTerminator.cpp create mode 100644 src/OpenSHC/UI/Credits/AppendCreditsPauseCommand.cpp create mode 100644 src/OpenSHC/UI/Credits/AppendCreditsSegmentEndCommand.cpp create mode 100644 src/OpenSHC/UI/Credits/AppendCreditsSoundStreamCommand.cpp create mode 100644 src/OpenSHC/UI/Credits/SetActiveCreditsSequenceIndex.cpp delete mode 100644 src/OpenSHC/UI/DisableMercPostPortraits.cpp create mode 100644 src/OpenSHC/UI/DisplayElements/ActivateGameSpeedAndResourceLackDisplayElementUnk.cpp create mode 100644 src/OpenSHC/UI/DisplayElements/CheckDisplayElementByIDAndSetForUnlimitedDisplay.cpp create mode 100644 src/OpenSHC/UI/DisplayElements/FindDisplayElementWithID.cpp create mode 100644 src/OpenSHC/UI/DisplayElements/GetIfDisplayElementStateNotZero.cpp create mode 100644 src/OpenSHC/UI/DisplayElements/RenderInGameChatDisplayElement.cpp create mode 100644 src/OpenSHC/UI/DisplayElements/RenderNoRushDisplayElementUnk.cpp create mode 100644 src/OpenSHC/UI/DisplayElements/RenderNoTreeGrowthTextDisplayElement.cpp create mode 100644 src/OpenSHC/UI/DisplayElements/RenderResourceMissing1DisplayElement.cpp create mode 100644 src/OpenSHC/UI/DisplayElements/RenderResourceMissing2DisplayElement.cpp create mode 100644 src/OpenSHC/UI/DisplayElements/RenderUnknownDisplayElement7.cpp create mode 100644 src/OpenSHC/UI/DisplayElements/TogglePlayerPingDisplayElementUnk.cpp delete mode 100644 src/OpenSHC/UI/FindDisplayElementWithID.cpp create mode 100644 src/OpenSHC/UI/Helpers/CaptureCurrentTimeToUnknownTime01.cpp delete mode 100644 src/OpenSHC/UI/Helpers/CheckDisplayElementByIDAndSetForUnlimitedDisplay.cpp create mode 100644 src/OpenSHC/UI/Helpers/DisableMercPostPortraits.cpp delete mode 100644 src/OpenSHC/UI/Helpers/GetIfDisplayElementStateNotZero.cpp create mode 100644 src/OpenSHC/UI/Helpers/LoadTGX_shc_back.cpp create mode 100644 src/OpenSHC/UI/Helpers/PlayAMessageFromAI.cpp create mode 100644 src/OpenSHC/UI/Helpers/RestoreScenarioGold.cpp create mode 100644 src/OpenSHC/UI/Helpers/SetTutorialHintActiveWithTimestamp.cpp create mode 100644 src/OpenSHC/UI/Helpers/ShowProgressBarSaveLoadDialog.cpp create mode 100644 src/OpenSHC/UI/Helpers/TacticalPowersFill.cpp delete mode 100644 src/OpenSHC/UI/LoadTGX_shc_back.cpp delete mode 100644 src/OpenSHC/UI/MenuItemFunction_General_Unknown.cpp create mode 100644 src/OpenSHC/UI/MenuItems/General/MenuItemFunction_General_Unknown.cpp rename src/OpenSHC/UI/MenuItems/{UnusedOldTitleMenu => Unused}/MenuItemActionHandler_UnusedOldTitleMenu_General.cpp (83%) rename src/OpenSHC/UI/MenuItems/{UnusedWinCondition => Unused}/MenuItemActionHandler_UnusedWinCondition_Options.cpp (94%) delete mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_CreateOrTriggerInvasion.cpp delete mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_DebugDataAiInfo.cpp delete mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_DebugDataCurrentPlayerData.cpp delete mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_DebugDataMapData.cpp delete mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_DebugDataMousePointing.cpp delete mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_DebugDataNetwork.cpp delete mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_DebugDataSplitInfo.cpp delete mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_DebugDataUnitData.cpp delete mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_DebugDataZoneDataUnk.cpp delete mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_DisableTroops.cpp delete mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_DisableWeapon.cpp delete mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_DisplayAiLordMessage.cpp delete mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_EnterTitleOnGameStart.cpp delete mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_GameplayOptions.cpp delete mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_NetworkOptions.cpp delete mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_OnlineQuitGame.cpp delete mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_OptionsMenu.cpp delete mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_SkirmishConnectionOptions.cpp delete mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_SkirmishPlayOptions.cpp delete mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_SoundOptions.cpp delete mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_StartGoods.cpp delete mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_TextEditor.cpp delete mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_TraderSettings.cpp delete mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_TriggerEvent.cpp delete mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_TutorialBox_Thunk.cpp delete mode 100644 src/OpenSHC/UI/MenuModalRenderFunction_UnusedSiegeAttackingForceUnk.cpp create mode 100644 src/OpenSHC/UI/MenuModals/CreateOrTriggerInvasion/MenuModalRenderFunction_CreateOrTriggerInvasion.cpp create mode 100644 src/OpenSHC/UI/MenuModals/DebugDataAiInfo/MenuModalRenderFunction_DebugDataAiInfo.cpp create mode 100644 src/OpenSHC/UI/MenuModals/DebugDataCurrentPlayerData/MenuModalRenderFunction_DebugDataCurrentPlayerData.cpp create mode 100644 src/OpenSHC/UI/MenuModals/DebugDataMapData/MenuModalRenderFunction_DebugDataMapData.cpp create mode 100644 src/OpenSHC/UI/MenuModals/DebugDataMousePointing/MenuModalRenderFunction_DebugDataMousePointing.cpp create mode 100644 src/OpenSHC/UI/MenuModals/DebugDataNetwork/MenuModalRenderFunction_DebugDataNetwork.cpp create mode 100644 src/OpenSHC/UI/MenuModals/DebugDataSplitInfo/MenuModalRenderFunction_DebugDataSplitInfo.cpp create mode 100644 src/OpenSHC/UI/MenuModals/DebugDataUnitData/MenuModalRenderFunction_DebugDataUnitData.cpp create mode 100644 src/OpenSHC/UI/MenuModals/DebugDataZoneDataUnk/MenuModalRenderFunction_DebugDataZoneDataUnk.cpp create mode 100644 src/OpenSHC/UI/MenuModals/DisableTroops/MenuModalRenderFunction_DisableTroops.cpp create mode 100644 src/OpenSHC/UI/MenuModals/DisableWeapon/MenuModalRenderFunction_DisableWeapon.cpp create mode 100644 src/OpenSHC/UI/MenuModals/DisplayAiLordMessage/MenuModalRenderFunction_DisplayAiLordMessage.cpp create mode 100644 src/OpenSHC/UI/MenuModals/EnterTitleOnGameStart/MenuModalRenderFunction_EnterTitleOnGameStart.cpp create mode 100644 src/OpenSHC/UI/MenuModals/GameplayOptions/MenuModalRenderFunction_GameplayOptions.cpp create mode 100644 src/OpenSHC/UI/MenuModals/NetworkOptions/MenuModalRenderFunction_NetworkOptions.cpp create mode 100644 src/OpenSHC/UI/MenuModals/OnlineQuitGame/MenuModalRenderFunction_OnlineQuitGame.cpp create mode 100644 src/OpenSHC/UI/MenuModals/OptionsMenu/MenuModalRenderFunction_OptionsMenu.cpp create mode 100644 src/OpenSHC/UI/MenuModals/SkirmishConnectionOptions/MenuModalRenderFunction_SkirmishConnectionOptions.cpp create mode 100644 src/OpenSHC/UI/MenuModals/SkirmishPlayOptions/MenuModalRenderFunction_SkirmishPlayOptions.cpp create mode 100644 src/OpenSHC/UI/MenuModals/SoundOptions/MenuModalRenderFunction_SoundOptions.cpp create mode 100644 src/OpenSHC/UI/MenuModals/StartGoods/MenuModalRenderFunction_StartGoods.cpp create mode 100644 src/OpenSHC/UI/MenuModals/TextEditor/MenuModalRenderFunction_TextEditor.cpp create mode 100644 src/OpenSHC/UI/MenuModals/TraderSettings/MenuModalRenderFunction_TraderSettings.cpp create mode 100644 src/OpenSHC/UI/MenuModals/TriggerEvent/MenuModalRenderFunction_TriggerEvent.cpp create mode 100644 src/OpenSHC/UI/MenuModals/TutorialBox/MenuModalRenderFunction_TutorialBox_Thunk.cpp create mode 100644 src/OpenSHC/UI/MenuModals/UnusedSiegeAttackingForceUnk/MenuModalRenderFunction_UnusedSiegeAttackingForceUnk.cpp delete mode 100644 src/OpenSHC/UI/PlayAMessageFromAI.cpp delete mode 100644 src/OpenSHC/UI/Rendering/RenderBuildingMenu_RecruitingBuilding.cpp delete mode 100644 src/OpenSHC/UI/Rendering/RenderInGameChatDisplayElement.cpp delete mode 100644 src/OpenSHC/UI/Rendering/RenderNoRushDisplayElementUnk.cpp delete mode 100644 src/OpenSHC/UI/Rendering/RenderNoTreeGrowthTextDisplayElement.cpp delete mode 100644 src/OpenSHC/UI/Rendering/RenderResourceMissing1DisplayElement.cpp delete mode 100644 src/OpenSHC/UI/Rendering/RenderResourceMissing2DisplayElement.cpp delete mode 100644 src/OpenSHC/UI/Rendering/RenderUnknownDisplayElement7.cpp delete mode 100644 src/OpenSHC/UI/Rendering/TogglePlayerPingDisplayElementUnk.cpp delete mode 100644 src/OpenSHC/UI/RestoreScenarioGold.cpp delete mode 100644 src/OpenSHC/UI/SetActiveCreditsSequenceIndex.cpp delete mode 100644 src/OpenSHC/UI/SetTutorialHintActiveWithTimestamp.cpp delete mode 100644 src/OpenSHC/UI/ShowProgressBarSaveLoadDialog.cpp delete mode 100644 src/OpenSHC/UI/TacticalPowersFill.cpp diff --git a/src/OpenSHC/Map/LandscapeState/constructLandscapeState.cpp b/src/OpenSHC/Map/LandscapeState/Construct_LandscapeState.cpp similarity index 88% rename from src/OpenSHC/Map/LandscapeState/constructLandscapeState.cpp rename to src/OpenSHC/Map/LandscapeState/Construct_LandscapeState.cpp index 383c8b954..2a59d941c 100644 --- a/src/OpenSHC/Map/LandscapeState/constructLandscapeState.cpp +++ b/src/OpenSHC/Map/LandscapeState/Construct_LandscapeState.cpp @@ -7,7 +7,7 @@ namespace Map { using OpenSHC::Map::LandscapeState; // FUNCTION: STRONGHOLDCRUSADER 0x004F3930 - LandscapeState* LandscapeState::constructLandscapeState() + LandscapeState* LandscapeState::Construct_LandscapeState() { this->creationTime = timeGetTime(); MACRO_CALL_MEMBER(OpenSHC::Map::LandscapeState_Func::clearRocksAndTrees, this)(); diff --git a/src/OpenSHC/Map/LandscapeState/isTreeAliveAndMatchingUID.cpp b/src/OpenSHC/Map/LandscapeState/isTreeAliveAndMatchingUID.cpp index 96f3cd016..b9020ddaa 100644 --- a/src/OpenSHC/Map/LandscapeState/isTreeAliveAndMatchingUID.cpp +++ b/src/OpenSHC/Map/LandscapeState/isTreeAliveAndMatchingUID.cpp @@ -1,12 +1,15 @@ #include "OpenSHC/Map/LandscapeState.func.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" namespace OpenSHC { namespace Map { + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + // FUNCTION: STRONGHOLDCRUSADER 0x004F2FB0 - uint LandscapeState::isTreeAliveAndMatchingUID(int treeID, int param_2) + BOOLEnum LandscapeState::isTreeAliveAndMatchingUID(int treeID, int treeUID) { - if (this->trees[treeID].uid != param_2) { + if (this->trees[treeID].uid != treeUID) { return FALSE; } return this->trees[treeID].zeroUpTo2 == 0; diff --git a/src/OpenSHC/Map/MapPropertiesState/isMercRecruitableForBuildingType.cpp b/src/OpenSHC/Map/MapPropertiesState/isMercRecruitableForBuildingType.cpp index 7579a35fe..923c13dda 100644 --- a/src/OpenSHC/Map/MapPropertiesState/isMercRecruitableForBuildingType.cpp +++ b/src/OpenSHC/Map/MapPropertiesState/isMercRecruitableForBuildingType.cpp @@ -9,13 +9,12 @@ namespace Map { using OpenSHC::Game::GameMode2; // FUNCTION: STRONGHOLDCRUSADER 0x004BB0B0 - int MapPropertiesState::isMercRecruitableForBuildingType(int param_1) + int MapPropertiesState::isMercRecruitableForBuildingType(int buildingType) { - int iVar1 = 1; - if (DAT_GameCore::instance.gameMode_2 != OpenSHC::Game::GM_EDITOR) { - iVar1 = ((short*)&this->field10_0x520)[param_1]; + if (DAT_GameCore::instance.gameMode_2 == OpenSHC::Game::GM_EDITOR) { + return 1; } - return iVar1; + return this->buildingAvailabilityArray2[buildingType]; } } diff --git a/src/OpenSHC/Map/MapPropertiesState/mapHasCertainEvent.cpp b/src/OpenSHC/Map/MapPropertiesState/mapHasCertainEvent.cpp index 53ea7688b..af141c670 100644 --- a/src/OpenSHC/Map/MapPropertiesState/mapHasCertainEvent.cpp +++ b/src/OpenSHC/Map/MapPropertiesState/mapHasCertainEvent.cpp @@ -1,26 +1,20 @@ #include "OpenSHC/Map/MapPropertiesState.func.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" namespace OpenSHC { namespace Map { + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + // FUNCTION: STRONGHOLDCRUSADER 0x004B7890 - undefined4 MapPropertiesState::mapHasCertainEvent() + BOOLEnum MapPropertiesState::mapHasCertainEvent() { - int iVar1; - int* piVar2; - - iVar1 = 0; - if (0 < this->eventsCount) { - piVar2 = &this->scenarioEvents[0].header.tl_type; - do { - if (*piVar2 == 1) { - return (undefined4)(1); - } - iVar1 = iVar1 + 1; - piVar2 = piVar2 + 0x39; - } while (iVar1 < this->eventsCount); + for (int i = 0; i < this->eventsCount; ++i) { + if (this->scenarioEvents[i].header.tl_type == 1) { + return TRUE; + } } - return (undefined4)(0); + return FALSE; } } diff --git a/src/OpenSHC/Map/MapPropertiesState/sumInvasionEventUnitCount.cpp b/src/OpenSHC/Map/MapPropertiesState/sumInvasionEventUnitCount.cpp index a4c5070a0..7f2f1728d 100644 --- a/src/OpenSHC/Map/MapPropertiesState/sumInvasionEventUnitCount.cpp +++ b/src/OpenSHC/Map/MapPropertiesState/sumInvasionEventUnitCount.cpp @@ -4,19 +4,13 @@ namespace OpenSHC { namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x004BBA20 - void MapPropertiesState::sumInvasionEventUnitCount() + int MapPropertiesState::sumInvasionEventUnitCount() { - int* piVar1; - int* piVar2; - this->DAT_InvasionEventItemUnitCountSum = 0; - piVar1 = this->invasionEventContent.unitCountsPerUnitType + 3; - do { - piVar2 = piVar1 + 5; - this->DAT_InvasionEventItemUnitCountSum - = this->DAT_InvasionEventItemUnitCountSum + piVar1[-3] + piVar1[-2] + piVar1[-1] + piVar1[1] + *piVar1; - piVar1 = piVar2; - } while ((int)piVar2 < 0x1667ebc); + for (int i = 0; i < 25; ++i) { + this->DAT_InvasionEventItemUnitCountSum += this->invasionEventContent.unitCountsPerUnitType[i]; + } + return this->DAT_InvasionEventItemUnitCountSum; } } diff --git a/src/OpenSHC/Map/Units/TribesState/addUnitToSelected.cpp b/src/OpenSHC/Map/Units/TribesState/addUnitToSelected.cpp index 8dbefc7c8..1b1536793 100644 --- a/src/OpenSHC/Map/Units/TribesState/addUnitToSelected.cpp +++ b/src/OpenSHC/Map/Units/TribesState/addUnitToSelected.cpp @@ -8,13 +8,10 @@ namespace Map { namespace Units { // FUNCTION: STRONGHOLDCRUSADER 0x00522520 - void TribesState::addUnitToSelected(uint unitID) + void TribesState::addUnitToSelected(int unitID) { - int index; - - index = (int)unitID / 16; - *(ushort*)(DAT_UnitsState::instance.selectedUnitsBitFlags + index * 2) - |= DAT_UnitSelectionDefinedData::instance.BitMaskHelper[(int)unitID % 16]; + ((ushort*)DAT_UnitsState::instance.selectedUnitsBitFlags)[unitID / 16] + |= DAT_UnitSelectionDefinedData::instance.BitMaskHelper[unitID % 16]; } } diff --git a/src/OpenSHC/Map/Units/TribesState/constructTribesState.cpp b/src/OpenSHC/Map/Units/TribesState/constructTribesState.cpp deleted file mode 100644 index 9744c66db..000000000 --- a/src/OpenSHC/Map/Units/TribesState/constructTribesState.cpp +++ /dev/null @@ -1,28 +0,0 @@ -#include "../TribesState.func.hpp" - -#include "OpenSHC/Map/Units/TribesState.hpp" - -namespace OpenSHC { -namespace Map { - namespace Units { - - using OpenSHC::Map::Units::TribesState; - - /* - decompilerscript: committed: 2025-01-30 21:57:43.216000 - */ - - // FUNCTION: STRONGHOLDCRUSADER 0x00521180 - TribesState* TribesState::Constructor_TribesState() - - { - this->constructorTime = timeGetTime(); - this->clans = 0; - this->fcn_mtribe = 0; - this->field2_0x8 = 1; - return this; - } - - } -} -} diff --git a/src/OpenSHC/Map/Units/TribesState/setCamelSpawnXY.cpp b/src/OpenSHC/Map/Units/TribesState/setCamelSpawnXY.cpp index 441f137b4..2b5e21089 100644 --- a/src/OpenSHC/Map/Units/TribesState/setCamelSpawnXY.cpp +++ b/src/OpenSHC/Map/Units/TribesState/setCamelSpawnXY.cpp @@ -9,10 +9,10 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x005233E0 void TribesState::setCamelSpawnXY(undefined4 x, undefined4 y) { - for (int i = 0; i < 4; i++) { - if (DAT_GameState::instance.mapAndTime.camelSpawnXY[i][0] == 0) { - DAT_GameState::instance.mapAndTime.camelSpawnXY[i][0] = x; - DAT_GameState::instance.mapAndTime.camelSpawnXY[i][1] = y; + for (int i = 0; i < 4; ++i) { + if (DAT_GameState::instance.mapAndTime.camelSpawnXY[i].x == 0) { + DAT_GameState::instance.mapAndTime.camelSpawnXY[i].x = x; + DAT_GameState::instance.mapAndTime.camelSpawnXY[i].y = y; } } } diff --git a/src/OpenSHC/Map/Units/TribesState/setWhetherTribeContainsAnyUnits.cpp b/src/OpenSHC/Map/Units/TribesState/setWhetherTribeContainsAnyUnits.cpp index 85b3a7ecf..ba8b9ffaf 100644 --- a/src/OpenSHC/Map/Units/TribesState/setWhetherTribeContainsAnyUnits.cpp +++ b/src/OpenSHC/Map/Units/TribesState/setWhetherTribeContainsAnyUnits.cpp @@ -5,14 +5,15 @@ namespace Map { namespace Units { // FUNCTION: STRONGHOLDCRUSADER 0x005224E0 - void TribesState::setWhetherTribeContainsAnyUnits(int tribeID) + int TribesState::setWhetherTribeContainsAnyUnits(int tribeID) { - for (int iVar1 = 0; iVar1 < 200; iVar1++) { - if (this->tribes[tribeID].unitSelectionBitMasked[iVar1] != 0) { - this->tribes[tribeID].highestID = iVar1; - return; + for (int i = 0; i < 200; ++i) { + if (this->tribes[tribeID].unitSelectionBitMasked[i] != 0) { + this->tribes[tribeID].highestID = i; + return i; } } + return 200; } } diff --git a/src/OpenSHC/Map/Units/TribesState/storeDeerXAndYinMapInfo.cpp b/src/OpenSHC/Map/Units/TribesState/storeDeerXAndYinMapInfo.cpp index 12999e724..6710b8e19 100644 --- a/src/OpenSHC/Map/Units/TribesState/storeDeerXAndYinMapInfo.cpp +++ b/src/OpenSHC/Map/Units/TribesState/storeDeerXAndYinMapInfo.cpp @@ -9,10 +9,10 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x00523340 void TribesState::storeDeerXAndYinMapInfo(undefined4 x, undefined4 y) { - for (int i = 0; i < 4; i++) { - if (DAT_GameState::instance.mapAndTime.deerSpawnLocationsXY[i][0] == 0) { - DAT_GameState::instance.mapAndTime.deerSpawnLocationsXY[i][0] = x; - DAT_GameState::instance.mapAndTime.deerSpawnLocationsXY[i][1] = y; + for (int i = 0; i < 4; ++i) { + if (DAT_GameState::instance.mapAndTime.deerSpawnLocationsXY[i].x == 0) { + DAT_GameState::instance.mapAndTime.deerSpawnLocationsXY[i].x = x; + DAT_GameState::instance.mapAndTime.deerSpawnLocationsXY[i].y = y; } } } diff --git a/src/OpenSHC/Map/Units/TribesState/tribeCorrespondsWithUID.cpp b/src/OpenSHC/Map/Units/TribesState/tribeCorrespondsWithUID.cpp index d795e9529..945cd23ec 100644 --- a/src/OpenSHC/Map/Units/TribesState/tribeCorrespondsWithUID.cpp +++ b/src/OpenSHC/Map/Units/TribesState/tribeCorrespondsWithUID.cpp @@ -1,14 +1,17 @@ #include "../TribesState.func.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" namespace OpenSHC { namespace Map { namespace Units { + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + // FUNCTION: STRONGHOLDCRUSADER 0x00522360 - uint TribesState::tribeCorrespondsWithUID(int tribeID, uint tribeUID) + BOOLEnum TribesState::tribeCorrespondsWithUID(int tribeID, uint tribeUID) { if (tribeUID == 0) { - return 0; + return FALSE; } return this->tribes[tribeID].uid == tribeUID; } diff --git a/src/OpenSHC/Map/Units/TroopValueState/attackInfoHasArch2Building.cpp b/src/OpenSHC/Map/Units/TroopValueState/attackInfoHasArch2Building.cpp index 36f3a0536..57b4564f4 100644 --- a/src/OpenSHC/Map/Units/TroopValueState/attackInfoHasArch2Building.cpp +++ b/src/OpenSHC/Map/Units/TroopValueState/attackInfoHasArch2Building.cpp @@ -1,4 +1,5 @@ #include "OpenSHC/Map/Units/TroopValueState.func.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" #include "OpenSHC/Globals/DAT_TroopValueState.hpp" @@ -6,11 +7,12 @@ namespace OpenSHC { namespace Map { namespace Units { + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + // FUNCTION: STRONGHOLDCRUSADER 0x0051ACB0 - undefined4 TroopValueState::attackInfoHasArch2Building(int buildingID) + BOOLEnum TroopValueState::attackInfoHasArch2Building(int buildingID) { - for (int i = 0; i < 1000; i++) { - // fixme: this function doesn't use this-> (would be not 100% matching!) + for (int i = 0; i < 1000; ++i) { if (buildingID == DAT_TroopValueState::instance.attackInfo.arch2ValuesArray[i].buildingID) { return TRUE; } diff --git a/src/OpenSHC/Map/Units/TroopValueState/isAttackWaveComplete.cpp b/src/OpenSHC/Map/Units/TroopValueState/isAttackWaveComplete.cpp index e9e02cebc..a4b1afeb0 100644 --- a/src/OpenSHC/Map/Units/TroopValueState/isAttackWaveComplete.cpp +++ b/src/OpenSHC/Map/Units/TroopValueState/isAttackWaveComplete.cpp @@ -1,4 +1,5 @@ #include "OpenSHC/Map/Units/TroopValueState.func.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" #include "OpenSHC/Globals/DAT_TroopValueState.hpp" @@ -6,13 +7,14 @@ namespace OpenSHC { namespace Map { namespace Units { + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + // FUNCTION: STRONGHOLDCRUSADER 0x00518350 - undefined4 TroopValueState::isAttackWaveComplete() + BOOLEnum TroopValueState::isAttackWaveComplete() { - for (int i = 0; i < 50; i++) { - // fixme: this function doesn't use this-> (would be not 100% matching!) - if ((DAT_TroopValueState::instance.attackInfo.nof_tribes[i] != 0 - && (DAT_TroopValueState::instance.attackInfo.value3Array01[i] != 6))) { + for (int i = 0; i < 50; ++i) { + if (DAT_TroopValueState::instance.attackInfo.nof_tribes[i] != 0 + && DAT_TroopValueState::instance.attackInfo.value3Array01[i] != 6) { return FALSE; } } diff --git a/src/OpenSHC/Synchrony/ProgressBarRelated.cpp b/src/OpenSHC/Synchrony/ProgressBarRelated.cpp index 854198c8b..5e7acdb12 100644 --- a/src/OpenSHC/Synchrony/ProgressBarRelated.cpp +++ b/src/OpenSHC/Synchrony/ProgressBarRelated.cpp @@ -1,5 +1,5 @@ #include "OpenSHC/Synchrony.func.hpp" -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuItems/ProgressBarBox.func.hpp" #include "OpenSHC/UI/MenuModalComposition.func.hpp" #include "OpenSHC/UI/Enums/MenuModalType.hpp" @@ -7,16 +7,19 @@ #include "OpenSHC/Globals/DAT_MenuTextInputState.hpp" namespace OpenSHC { +namespace Synchrony { -using OpenSHC::UI::Enums::MenuModalType; + using OpenSHC::UI::Enums::MenuModalType; -// FUNCTION: STRONGHOLDCRUSADER 0x00495840 -void Synchrony::ProgressBarRelated() -{ - DAT_MenuTextInputState::instance.DAT_MenuOptionsActionParameter = 0x1f; - MACRO_CALL_MEMBER(OpenSHC::UI::MenuModalComposition_Func::activateModalDialog2, DAT_MenuModalComposition1::ptr)( - OpenSHC::UI::Enums::MMT_PROGRESS_BAR_BOX); - MACRO_CALL(OpenSHC::UI_Func::MenuItemActionHandler_ProgressBarBox_LoadAndSaveGameButtonLogic)(0); -} + // FUNCTION: STRONGHOLDCRUSADER 0x00495840 + void ProgressBarRelated() + { + DAT_MenuTextInputState::instance.DAT_MenuOptionsActionParameter = 0x1f; + MACRO_CALL_MEMBER(OpenSHC::UI::MenuModalComposition_Func::activateModalDialog2, DAT_MenuModalComposition1::ptr)( + OpenSHC::UI::Enums::MMT_PROGRESS_BAR_BOX); + MACRO_CALL(OpenSHC::UI::MenuItems::ProgressBarBox_Func:: + MenuItemActionHandler_ProgressBarBox_LoadAndSaveGameButtonLogic)(0); + } } +} diff --git a/src/OpenSHC/UI/ActivateGameSpeedAndResourceLackDisplayElementUnk.cpp b/src/OpenSHC/UI/ActivateGameSpeedAndResourceLackDisplayElementUnk.cpp deleted file mode 100644 index a6811fe19..000000000 --- a/src/OpenSHC/UI/ActivateGameSpeedAndResourceLackDisplayElementUnk.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#include "OpenSHC/UI.func.hpp" -#include "OpenSHC/UI/DisplayElement.hpp" -#include "OpenSHC/UI/Enums/DisplayElementID.hpp" - -namespace OpenSHC { - -using OpenSHC::UI::DisplayElement; -using OpenSHC::UI::Enums::DisplayElementID; - -// FUNCTION: STRONGHOLDCRUSADER 0x004AF680 -void UI::ActivateGameSpeedAndResourceLackDisplayElementUnk( - DisplayElementID elementId, dword elementState, int displayDuration) -{ - DisplayElement* _displayElementPtr = MACRO_CALL(OpenSHC::UI_Func::FindDisplayElementWithID)(elementId); - if (_displayElementPtr != (DisplayElement*)0x0) { - _displayElementPtr->elementStateUnk_0xc = elementState; - _displayElementPtr->displayDuration_0x14 = displayDuration; - DWORD _currentTime = timeGetTime(); - _displayElementPtr->activationTime_0x10 = _currentTime; - } -} - -} diff --git a/src/OpenSHC/UI/AppendCreditsClearImageCommand.cpp b/src/OpenSHC/UI/AppendCreditsClearImageCommand.cpp deleted file mode 100644 index bd00fb811..000000000 --- a/src/OpenSHC/UI/AppendCreditsClearImageCommand.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "OpenSHC/UI.func.hpp" - -#include "OpenSHC/Globals/DAT_ARRAY_00eb9b68.hpp" -#include "OpenSHC/Globals/DAT_UnknownBinkCount.hpp" - -namespace OpenSHC { - -// FUNCTION: STRONGHOLDCRUSADER 0x004DA8A0 -void UI::AppendCreditsClearImageCommand() -{ - if (DAT_UnknownBinkCount::instance < 0x120) { - DAT_ARRAY_00eb9b68::instance[DAT_UnknownBinkCount::instance].field0_0x0 = 0x28; - DAT_UnknownBinkCount::instance = DAT_UnknownBinkCount::instance + 1; - } -} - -} diff --git a/src/OpenSHC/UI/AppendCreditsCommand.cpp b/src/OpenSHC/UI/AppendCreditsCommand.cpp deleted file mode 100644 index 10b42b8d5..000000000 --- a/src/OpenSHC/UI/AppendCreditsCommand.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "OpenSHC/UI.func.hpp" - -#include "OpenSHC/Globals/DAT_ARRAY_00eb9b68.hpp" -#include "OpenSHC/Globals/DAT_UnknownBinkCount.hpp" - -namespace OpenSHC { - -// FUNCTION: STRONGHOLDCRUSADER 0x004DA7E0 -void UI::AppendCreditsCommand(int param_1) -{ - if (DAT_UnknownBinkCount::instance < 0x120) { - DAT_ARRAY_00eb9b68::instance[DAT_UnknownBinkCount::instance].field0_0x0 = param_1; - DAT_UnknownBinkCount::instance = DAT_UnknownBinkCount::instance + 1; - } -} - -} diff --git a/src/OpenSHC/UI/AppendCreditsListTerminator.cpp b/src/OpenSHC/UI/AppendCreditsListTerminator.cpp deleted file mode 100644 index 9195364ac..000000000 --- a/src/OpenSHC/UI/AppendCreditsListTerminator.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "OpenSHC/UI.func.hpp" - -#include "OpenSHC/Globals/DAT_ARRAY_00eb9b68.hpp" -#include "OpenSHC/Globals/DAT_UnknownBinkCount.hpp" - -namespace OpenSHC { - -// FUNCTION: STRONGHOLDCRUSADER 0x004DA810 -void UI::AppendCreditsListTerminator() -{ - if (DAT_UnknownBinkCount::instance < 288) { - DAT_ARRAY_00eb9b68::instance[DAT_UnknownBinkCount::instance].field0_0x0 = 0x20; - DAT_UnknownBinkCount::instance = DAT_UnknownBinkCount::instance + 1; - } -} - -} diff --git a/src/OpenSHC/UI/AppendCreditsPauseCommand.cpp b/src/OpenSHC/UI/AppendCreditsPauseCommand.cpp deleted file mode 100644 index b4a0d4f77..000000000 --- a/src/OpenSHC/UI/AppendCreditsPauseCommand.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "OpenSHC/UI.func.hpp" - -#include "OpenSHC/Globals/DAT_ARRAY_00eb9b68.hpp" -#include "OpenSHC/Globals/DAT_UnknownBinkCount.hpp" - -namespace OpenSHC { - -// FUNCTION: STRONGHOLDCRUSADER 0x004DA840 -void UI::AppendCreditsPauseCommand() -{ - if (DAT_UnknownBinkCount::instance < 0x120) { - DAT_ARRAY_00eb9b68::instance[DAT_UnknownBinkCount::instance].field0_0x0 = 0x1c; - DAT_UnknownBinkCount::instance = DAT_UnknownBinkCount::instance + 1; - } -} - -} diff --git a/src/OpenSHC/UI/AppendCreditsSegmentEndCommand.cpp b/src/OpenSHC/UI/AppendCreditsSegmentEndCommand.cpp deleted file mode 100644 index f2ab38e27..000000000 --- a/src/OpenSHC/UI/AppendCreditsSegmentEndCommand.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "OpenSHC/UI.func.hpp" - -#include "OpenSHC/Globals/DAT_ARRAY_00eb9b68.hpp" -#include "OpenSHC/Globals/DAT_UnknownBinkCount.hpp" - -namespace OpenSHC { - -// FUNCTION: STRONGHOLDCRUSADER 0x004DA870 -void UI::AppendCreditsSegmentEndCommand() -{ - if (DAT_UnknownBinkCount::instance < 0x120) { - DAT_ARRAY_00eb9b68::instance[DAT_UnknownBinkCount::instance].field0_0x0 = 0x1f; - DAT_UnknownBinkCount::instance = DAT_UnknownBinkCount::instance + 1; - } -} - -} diff --git a/src/OpenSHC/UI/AppendCreditsSoundStreamCommand.cpp b/src/OpenSHC/UI/AppendCreditsSoundStreamCommand.cpp deleted file mode 100644 index 3b72f33f5..000000000 --- a/src/OpenSHC/UI/AppendCreditsSoundStreamCommand.cpp +++ /dev/null @@ -1,21 +0,0 @@ -#include "OpenSHC/UI.func.hpp" -#include "OpenSHC/Audio/MSS/enums/SHC_SoundStream.hpp" - -#include "OpenSHC/Globals/DAT_ARRAY_00eb9b68.hpp" -#include "OpenSHC/Globals/DAT_UnknownBinkCount.hpp" - -namespace OpenSHC { - -using OpenSHC::Audio::MSS::enums::SHC_SoundStream; - -// FUNCTION: STRONGHOLDCRUSADER 0x004DABF0 -void UI::AppendCreditsSoundStreamCommand(int param_1, SHC_SoundStream param_2) -{ - if (DAT_UnknownBinkCount::instance < 0x120) { - DAT_ARRAY_00eb9b68::instance[DAT_UnknownBinkCount::instance].field0_0x0 = param_1; - DAT_ARRAY_00eb9b68::instance[DAT_UnknownBinkCount::instance].soundStream = param_2; - DAT_UnknownBinkCount::instance = DAT_UnknownBinkCount::instance + 1; - } -} - -} diff --git a/src/OpenSHC/UI/BuildingMenus/RenderBuildingMenu_RecruitingBuilding.cpp b/src/OpenSHC/UI/BuildingMenus/RenderBuildingMenu_RecruitingBuilding.cpp new file mode 100644 index 000000000..fb6fbc3d3 --- /dev/null +++ b/src/OpenSHC/UI/BuildingMenus/RenderBuildingMenu_RecruitingBuilding.cpp @@ -0,0 +1,21 @@ +#include "OpenSHC/Map/Buildings/BuildingsState.func.hpp" +#include "OpenSHC/UI/BuildingMenus.func.hpp" +#include "OpenSHC/UI/Rendering.func.hpp" + +#include "OpenSHC/Globals/DAT_BuildingsState.hpp" + +namespace OpenSHC { +namespace UI { + namespace BuildingMenus { + + // FUNCTION: STRONGHOLDCRUSADER 0x0043A8D0 + void RenderBuildingMenu_RecruitingBuilding() + { + MACRO_CALL_MEMBER( + OpenSHC::Map::Buildings::BuildingsState_Func::createEntityForAssemblyPointsForActiveTabType, + DAT_BuildingsState::ptr)(); + } + + } +} +} diff --git a/src/OpenSHC/UI/CaptureCurrentTimeToUnknownTime01.cpp b/src/OpenSHC/UI/CaptureCurrentTimeToUnknownTime01.cpp deleted file mode 100644 index 2dec9bbaf..000000000 --- a/src/OpenSHC/UI/CaptureCurrentTimeToUnknownTime01.cpp +++ /dev/null @@ -1,10 +0,0 @@ -#include "OpenSHC/UI.func.hpp" - -#include "OpenSHC/Globals/DAT_UnknownTime_01.hpp" - -namespace OpenSHC { - -// FUNCTION: STRONGHOLDCRUSADER 0x004B9610 -void UI::CaptureCurrentTimeToUnknownTime01() { DAT_UnknownTime_01::instance = timeGetTime(); } - -} diff --git a/src/OpenSHC/UI/Credits/AppendCreditsClearImageCommand.cpp b/src/OpenSHC/UI/Credits/AppendCreditsClearImageCommand.cpp new file mode 100644 index 000000000..98c996fdb --- /dev/null +++ b/src/OpenSHC/UI/Credits/AppendCreditsClearImageCommand.cpp @@ -0,0 +1,21 @@ +#include "OpenSHC/UI/Credits.func.hpp" + +#include "OpenSHC/Globals/DAT_ARRAY_00eb9b68.hpp" +#include "OpenSHC/Globals/DAT_UnknownBinkCount.hpp" + +namespace OpenSHC { +namespace UI { + namespace Credits { + + // FUNCTION: STRONGHOLDCRUSADER 0x004DA8A0 + void AppendCreditsClearImageCommand() + { + if (DAT_UnknownBinkCount::instance < 0x120) { + DAT_ARRAY_00eb9b68::instance[DAT_UnknownBinkCount::instance].field0_0x0 = 0x28; + DAT_UnknownBinkCount::instance = DAT_UnknownBinkCount::instance + 1; + } + } + + } +} +} diff --git a/src/OpenSHC/UI/Credits/AppendCreditsCommand.cpp b/src/OpenSHC/UI/Credits/AppendCreditsCommand.cpp new file mode 100644 index 000000000..186b5dbde --- /dev/null +++ b/src/OpenSHC/UI/Credits/AppendCreditsCommand.cpp @@ -0,0 +1,21 @@ +#include "OpenSHC/UI/Credits.func.hpp" + +#include "OpenSHC/Globals/DAT_ARRAY_00eb9b68.hpp" +#include "OpenSHC/Globals/DAT_UnknownBinkCount.hpp" + +namespace OpenSHC { +namespace UI { + namespace Credits { + + // FUNCTION: STRONGHOLDCRUSADER 0x004DA7E0 + void AppendCreditsCommand(int param_1) + { + if (DAT_UnknownBinkCount::instance < 0x120) { + DAT_ARRAY_00eb9b68::instance[DAT_UnknownBinkCount::instance].field0_0x0 = param_1; + DAT_UnknownBinkCount::instance = DAT_UnknownBinkCount::instance + 1; + } + } + + } +} +} diff --git a/src/OpenSHC/UI/Credits/AppendCreditsListTerminator.cpp b/src/OpenSHC/UI/Credits/AppendCreditsListTerminator.cpp new file mode 100644 index 000000000..d37241ef6 --- /dev/null +++ b/src/OpenSHC/UI/Credits/AppendCreditsListTerminator.cpp @@ -0,0 +1,21 @@ +#include "OpenSHC/UI/Credits.func.hpp" + +#include "OpenSHC/Globals/DAT_ARRAY_00eb9b68.hpp" +#include "OpenSHC/Globals/DAT_UnknownBinkCount.hpp" + +namespace OpenSHC { +namespace UI { + namespace Credits { + + // FUNCTION: STRONGHOLDCRUSADER 0x004DA810 + void AppendCreditsListTerminator() + { + if (DAT_UnknownBinkCount::instance < 288) { + DAT_ARRAY_00eb9b68::instance[DAT_UnknownBinkCount::instance].field0_0x0 = 0x20; + DAT_UnknownBinkCount::instance = DAT_UnknownBinkCount::instance + 1; + } + } + + } +} +} diff --git a/src/OpenSHC/UI/Credits/AppendCreditsPauseCommand.cpp b/src/OpenSHC/UI/Credits/AppendCreditsPauseCommand.cpp new file mode 100644 index 000000000..24c6e1910 --- /dev/null +++ b/src/OpenSHC/UI/Credits/AppendCreditsPauseCommand.cpp @@ -0,0 +1,21 @@ +#include "OpenSHC/UI/Credits.func.hpp" + +#include "OpenSHC/Globals/DAT_ARRAY_00eb9b68.hpp" +#include "OpenSHC/Globals/DAT_UnknownBinkCount.hpp" + +namespace OpenSHC { +namespace UI { + namespace Credits { + + // FUNCTION: STRONGHOLDCRUSADER 0x004DA840 + void AppendCreditsPauseCommand() + { + if (DAT_UnknownBinkCount::instance < 0x120) { + DAT_ARRAY_00eb9b68::instance[DAT_UnknownBinkCount::instance].field0_0x0 = 0x1c; + DAT_UnknownBinkCount::instance = DAT_UnknownBinkCount::instance + 1; + } + } + + } +} +} diff --git a/src/OpenSHC/UI/Credits/AppendCreditsSegmentEndCommand.cpp b/src/OpenSHC/UI/Credits/AppendCreditsSegmentEndCommand.cpp new file mode 100644 index 000000000..69acf315b --- /dev/null +++ b/src/OpenSHC/UI/Credits/AppendCreditsSegmentEndCommand.cpp @@ -0,0 +1,21 @@ +#include "OpenSHC/UI/Credits.func.hpp" + +#include "OpenSHC/Globals/DAT_ARRAY_00eb9b68.hpp" +#include "OpenSHC/Globals/DAT_UnknownBinkCount.hpp" + +namespace OpenSHC { +namespace UI { + namespace Credits { + + // FUNCTION: STRONGHOLDCRUSADER 0x004DA870 + void AppendCreditsSegmentEndCommand() + { + if (DAT_UnknownBinkCount::instance < 0x120) { + DAT_ARRAY_00eb9b68::instance[DAT_UnknownBinkCount::instance].field0_0x0 = 0x1f; + DAT_UnknownBinkCount::instance = DAT_UnknownBinkCount::instance + 1; + } + } + + } +} +} diff --git a/src/OpenSHC/UI/Credits/AppendCreditsSoundStreamCommand.cpp b/src/OpenSHC/UI/Credits/AppendCreditsSoundStreamCommand.cpp new file mode 100644 index 000000000..f5f6822c2 --- /dev/null +++ b/src/OpenSHC/UI/Credits/AppendCreditsSoundStreamCommand.cpp @@ -0,0 +1,25 @@ +#include "OpenSHC/UI/Credits.func.hpp" +#include "OpenSHC/Audio/MSS/enums/SHC_SoundStream.hpp" + +#include "OpenSHC/Globals/DAT_ARRAY_00eb9b68.hpp" +#include "OpenSHC/Globals/DAT_UnknownBinkCount.hpp" + +namespace OpenSHC { +namespace UI { + namespace Credits { + + using OpenSHC::Audio::MSS::enums::SHC_SoundStream; + + // FUNCTION: STRONGHOLDCRUSADER 0x004DABF0 + void AppendCreditsSoundStreamCommand(int param_1, SHC_SoundStream param_2) + { + if (DAT_UnknownBinkCount::instance < 0x120) { + DAT_ARRAY_00eb9b68::instance[DAT_UnknownBinkCount::instance].field0_0x0 = param_1; + DAT_ARRAY_00eb9b68::instance[DAT_UnknownBinkCount::instance].soundStream = param_2; + DAT_UnknownBinkCount::instance = DAT_UnknownBinkCount::instance + 1; + } + } + + } +} +} diff --git a/src/OpenSHC/UI/Credits/SetActiveCreditsSequenceIndex.cpp b/src/OpenSHC/UI/Credits/SetActiveCreditsSequenceIndex.cpp new file mode 100644 index 000000000..6baeffc30 --- /dev/null +++ b/src/OpenSHC/UI/Credits/SetActiveCreditsSequenceIndex.cpp @@ -0,0 +1,19 @@ +#include "OpenSHC/UI/Credits.func.hpp" + +#include "OpenSHC/Globals/DAT_00ed3120.hpp" +#include "OpenSHC/Globals/DAT_00ed3124.hpp" + +namespace OpenSHC { +namespace UI { + namespace Credits { + + // FUNCTION: STRONGHOLDCRUSADER 0x004D9270 + void __cdecl SetActiveCreditsSequenceIndex(undefined4 param_1) + { + DAT_00ed3124::instance = param_1; + DAT_00ed3120::instance = 0; + } + + } +} +} diff --git a/src/OpenSHC/UI/DisableMercPostPortraits.cpp b/src/OpenSHC/UI/DisableMercPostPortraits.cpp deleted file mode 100644 index a29b61696..000000000 --- a/src/OpenSHC/UI/DisableMercPostPortraits.cpp +++ /dev/null @@ -1,10 +0,0 @@ -#include "OpenSHC/UI.func.hpp" - -#include "OpenSHC/Globals/DAT_DisableMercPostPortraits.hpp" - -namespace OpenSHC { - -// FUNCTION: STRONGHOLDCRUSADER 0x00466E10 -void UI::DisableMercPostPortraits() { DAT_DisableMercPostPortraits::instance = 1; } - -} diff --git a/src/OpenSHC/UI/DisplayElements/ActivateGameSpeedAndResourceLackDisplayElementUnk.cpp b/src/OpenSHC/UI/DisplayElements/ActivateGameSpeedAndResourceLackDisplayElementUnk.cpp new file mode 100644 index 000000000..476ad95f5 --- /dev/null +++ b/src/OpenSHC/UI/DisplayElements/ActivateGameSpeedAndResourceLackDisplayElementUnk.cpp @@ -0,0 +1,28 @@ +#include "OpenSHC/UI/DisplayElements.func.hpp" +#include "OpenSHC/UI/DisplayElement.hpp" +#include "OpenSHC/UI/Enums/DisplayElementID.hpp" + +namespace OpenSHC { +namespace UI { + namespace DisplayElements { + + using OpenSHC::UI::DisplayElement; + using OpenSHC::UI::Enums::DisplayElementID; + + // FUNCTION: STRONGHOLDCRUSADER 0x004AF680 + void ActivateGameSpeedAndResourceLackDisplayElementUnk( + DisplayElementID elementId, dword elementState, int displayDuration) + { + DisplayElement* _displayElementPtr + = MACRO_CALL(OpenSHC::UI::DisplayElements_Func::FindDisplayElementWithID)(elementId); + if (_displayElementPtr != (DisplayElement*)0x0) { + _displayElementPtr->elementStateUnk_0xc = elementState; + _displayElementPtr->displayDuration_0x14 = displayDuration; + DWORD _currentTime = timeGetTime(); + _displayElementPtr->activationTime_0x10 = _currentTime; + } + } + + } +} +} diff --git a/src/OpenSHC/UI/DisplayElements/CheckDisplayElementByIDAndSetForUnlimitedDisplay.cpp b/src/OpenSHC/UI/DisplayElements/CheckDisplayElementByIDAndSetForUnlimitedDisplay.cpp new file mode 100644 index 000000000..4cbb598c7 --- /dev/null +++ b/src/OpenSHC/UI/DisplayElements/CheckDisplayElementByIDAndSetForUnlimitedDisplay.cpp @@ -0,0 +1,33 @@ +#include "OpenSHC/UI/DisplayElements.func.hpp" +#include "OpenSHC/UI/Helpers.func.hpp" +#include "OpenSHC/UI/DisplayElement.hpp" +#include "OpenSHC/UI/Enums/DisplayElementID.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +#include "OpenSHC/Globals/BOOL_RelatedToInitialGranaryAndKeepPlacement.hpp" + +namespace OpenSHC { +namespace UI { + namespace DisplayElements { + + using OpenSHC::UI::DisplayElement; + using OpenSHC::UI::Enums::DisplayElementID; + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x004AF650 + void CheckDisplayElementByIDAndSetForUnlimitedDisplay(DisplayElementID displayElementID, dword elementState) + { + DisplayElement* _displayElementPtr + = MACRO_CALL(OpenSHC::UI::DisplayElements_Func::FindDisplayElementWithID)(displayElementID); + if (_displayElementPtr != NULL) { + if (_displayElementPtr->elementStateUnk_0xc != elementState) { + BOOL_RelatedToInitialGranaryAndKeepPlacement::instance = FALSE; + } + _displayElementPtr->elementStateUnk_0xc = elementState; + _displayElementPtr->displayDuration_0x14 = -1; + } + } + + } +} +} diff --git a/src/OpenSHC/UI/DisplayElements/FindDisplayElementWithID.cpp b/src/OpenSHC/UI/DisplayElements/FindDisplayElementWithID.cpp new file mode 100644 index 000000000..46f425739 --- /dev/null +++ b/src/OpenSHC/UI/DisplayElements/FindDisplayElementWithID.cpp @@ -0,0 +1,26 @@ +#include "OpenSHC/UI/DisplayElements.func.hpp" +#include "OpenSHC/UI/DisplayElement.hpp" + +#include "OpenSHC/Globals/DAT_PointerToDisplayElementStackTop.hpp" + +namespace OpenSHC { +namespace UI { + namespace DisplayElements { + + using OpenSHC::UI::DisplayElement; + + // FUNCTION: STRONGHOLDCRUSADER 0x004AF630 + DisplayElement* FindDisplayElementWithID(int elementID) + { + DisplayElement* _pCurrent = DAT_PointerToDisplayElementStackTop::instance; + while (_pCurrent != NULL) { + if (_pCurrent->elementID_0x8 == elementID) + return _pCurrent; + _pCurrent = _pCurrent->nextDisplayElement_0x20; + } + return NULL; + } + + } +} +} diff --git a/src/OpenSHC/UI/DisplayElements/GetIfDisplayElementStateNotZero.cpp b/src/OpenSHC/UI/DisplayElements/GetIfDisplayElementStateNotZero.cpp new file mode 100644 index 000000000..e2ceced26 --- /dev/null +++ b/src/OpenSHC/UI/DisplayElements/GetIfDisplayElementStateNotZero.cpp @@ -0,0 +1,28 @@ +#include "OpenSHC/UI/DisplayElements.func.hpp" +#include "OpenSHC/UI/Helpers.func.hpp" +#include "OpenSHC/UI/DisplayElement.hpp" +#include "OpenSHC/UI/Enums/DisplayElementID.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +namespace OpenSHC { +namespace UI { + namespace DisplayElements { + + using OpenSHC::UI::DisplayElement; + using OpenSHC::UI::Enums::DisplayElementID; + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x004AF6E0 + BOOLEnum GetIfDisplayElementStateNotZero(DisplayElementID displayElementID) + { + DisplayElement* _displayElementPtr + = MACRO_CALL(OpenSHC::UI::DisplayElements_Func::FindDisplayElementWithID)(displayElementID); + if (_displayElementPtr != NULL) { + return _displayElementPtr->elementStateUnk_0xc != 0; + } + return FALSE; + } + + } +} +} diff --git a/src/OpenSHC/UI/DisplayElements/RenderInGameChatDisplayElement.cpp b/src/OpenSHC/UI/DisplayElements/RenderInGameChatDisplayElement.cpp new file mode 100644 index 000000000..393ce5c67 --- /dev/null +++ b/src/OpenSHC/UI/DisplayElements/RenderInGameChatDisplayElement.cpp @@ -0,0 +1,20 @@ +#include "OpenSHC/Synchrony/GameSynchronyState.func.hpp" +#include "OpenSHC/UI/DisplayElements.func.hpp" +#include "OpenSHC/UI/Rendering.func.hpp" + +#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" + +namespace OpenSHC { +namespace UI { + namespace DisplayElements { + + // FUNCTION: STRONGHOLDCRUSADER 0x004AF800 + void RenderInGameChatDisplayElement(int posX, int posY, DWORD elementState) + { + MACRO_CALL_MEMBER(OpenSHC::Synchrony::GameSynchronyState_Func::renderInGameChat, + DAT_GameSynchronyState::ptr)(posX, posY, elementState); + } + + } +} +} diff --git a/src/OpenSHC/UI/DisplayElements/RenderNoRushDisplayElementUnk.cpp b/src/OpenSHC/UI/DisplayElements/RenderNoRushDisplayElementUnk.cpp new file mode 100644 index 000000000..a8e2dcb4d --- /dev/null +++ b/src/OpenSHC/UI/DisplayElements/RenderNoRushDisplayElementUnk.cpp @@ -0,0 +1,149 @@ +#include "OpenSHC/Audio/SFX/SFXState.func.hpp" +#include "OpenSHC/Text/TextManager.func.hpp" +#include "OpenSHC/UI/DisplayElements.func.hpp" +#include "OpenSHC/UI/Helpers.func.hpp" +#include "OpenSHC/UI/Rendering.func.hpp" +#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" +#include "OpenSHC/DE/SHCDE/eTextSections.hpp" +#include "OpenSHC/Rendering/Enums/RenderTarget.hpp" +#include "OpenSHC/Rendering/ScreenResolutionEnum.hpp" +#include "OpenSHC/Text/TextAlignment.hpp" +#include "OpenSHC/UI/Enums/DisplayElementID.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +#include "OpenSHC/Globals/COL_BLACK.hpp" +#include "OpenSHC/Globals/COL_DARK_LIME.hpp" +#include "OpenSHC/Globals/DAT_GameState.hpp" +#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" +#include "OpenSHC/Globals/DAT_SFXState.hpp" +#include "OpenSHC/Globals/DAT_TextManagerObject.hpp" +#include "OpenSHC/Globals/DAT_WindowAndDirectDraw.hpp" + +namespace OpenSHC { +namespace UI { + namespace DisplayElements { + + using OpenSHC::DE::SHCDE::eTextSections; + using OpenSHC::Rendering::ScreenResolutionEnum; + using OpenSHC::Rendering::Enums::RenderTarget; + using OpenSHC::Text::TextAlignment; + using OpenSHC::UI::Enums::DisplayElementID; + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x004B20B0 + void RenderNoRushDisplayElementUnk(int posX, int posY, DWORD elementState) + { + char* pcVar1; + int left; + int iVar2; + int iVar3; + int xParam; + int yParam; + TextAlignment alignment; + uint foregroundColor; + uint backgroundColor; + int fontSize; + BOOLEnum keepOffsetX; + int iVar4; + int blendStrength; + + if (DAT_GameState::instance.mapAndTime.skirmishNoRushTicks == 0) { + /* + Plays pa paam pa pa pa paam + */ + + MACRO_CALL_MEMBER(OpenSHC::Audio::SFX::SFXState_Func::playWAVSFX, DAT_SFXState::ptr)("battlehorn.wav"); + MACRO_CALL(OpenSHC::UI::DisplayElements_Func::CheckDisplayElementByIDAndSetForUnlimitedDisplay)( + OpenSHC::UI::Enums::DEID_NO_RUSH, 0); + return; + } + iVar4 = 0x12; + pcVar1 = MACRO_CALL_MEMBER(OpenSHC::Text::TextManager_Func::getTextStringInGroupAtOffset, + DAT_TextManagerObject::ptr)(OpenSHC::DE::SHCDE::TEXT_SKIRMISH_MISC, 7); + iVar4 = MACRO_CALL_MEMBER(OpenSHC::Text::TextManager_Func::computeTextWidth, DAT_TextManagerObject::ptr)( + pcVar1, iVar4); + iVar2 = posX + 800; + DAT_PencilRenderCore::instance.surfaceTarget = OpenSHC::Rendering::Enums::RT_MAP_GAME; + if (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1024x768) { + iVar2 = posX + 0x390; + goto LAB_004b21ab; + } + if (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1280x1024) { + LAB_004b212c: + iVar2 = posX + 0x230; + } else { + if (DAT_WindowAndDirectDraw::instance.currentGameResolution != OpenSHC::Rendering::SRE_1600x1200) { + if (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1280x720) + goto LAB_004b212c; + if (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1440x900) { + iVar2 = posX + 0x1e0; + goto LAB_004b21ab; + } + if ((DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1920x1080) + || (DAT_WindowAndDirectDraw::instance.currentGameResolution + == OpenSHC::Rendering::SRE_1920x1200)) { + iVar2 = posX + 0xf0; + goto LAB_004b21ab; + } + if ((DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_2560x1440) + || (DAT_WindowAndDirectDraw::instance.currentGameResolution + == OpenSHC::Rendering::SRE_2560x1600)) { + iVar2 = posX + -0x50; + goto LAB_004b21ab; + } + if (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1366x768) { + iVar2 = posX + 0x205; + goto LAB_004b21ab; + } + if (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1680x1050) { + iVar2 = posX + 0x168; + goto LAB_004b21ab; + } + if (DAT_WindowAndDirectDraw::instance.currentGameResolution != OpenSHC::Rendering::SRE_1600x900) { + if (DAT_WindowAndDirectDraw::instance.currentGameResolution + == OpenSHC::Rendering::SRE_1024x600) { + iVar2 = posX + 0x2b0; + } else if (DAT_WindowAndDirectDraw::instance.currentGameResolution + == OpenSHC::Rendering::SRE_1360x768) { + iVar2 = posX + 0x208; + } + goto LAB_004b21ab; + } + } + iVar2 = posX + 400; + } + LAB_004b21ab: + iVar3 = (iVar4 + 0x32) / 2; + iVar2 = iVar2 + (-0x12 - iVar3); + left = iVar2 - iVar3; + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawBlendedBlackBox, + DAT_PencilRenderCore::ptr)(left + -7, posY + -5, iVar3 + 5 + iVar2, posY + 0x1e, 0x10); + blendStrength = 0; + keepOffsetX = FALSE; + fontSize = 0x12; + backgroundColor = 0; + foregroundColor = 0xc2f0eb; + alignment = OpenSHC::Text::TTA_CENTER; + xParam = iVar2; + yParam = posY; + pcVar1 = MACRO_CALL_MEMBER(OpenSHC::Text::TextManager_Func::getTextStringInGroupAtOffset, + DAT_TextManagerObject::ptr)(OpenSHC::DE::SHCDE::TEXT_SKIRMISH_MISC, 7); + MACRO_CALL_MEMBER(OpenSHC::Text::TextManager_Func::renderInGameTextWithShadow, DAT_TextManagerObject::ptr)( + pcVar1, xParam, yParam, alignment, foregroundColor, backgroundColor, fontSize, keepOffsetX, + blendStrength); + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawBorderBox, DAT_PencilRenderCore::ptr)( + left + -1, posY + 0x12, iVar3 + 1 + iVar2, posY + 0x18, + (ushort)((int)(COL_BLACK::instance.shortValue))); + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawColorBox, DAT_PencilRenderCore::ptr)( + left, posY + 0x13, + ((DAT_GameState::instance.mapAndTime.skirmishNoRushTicks * (iVar4 + 0x32)) + / DAT_GameState::instance.mapAndTime.skirmishNoRushTicksLeft + - iVar3) + + iVar2, + posY + 0x17, (ushort)((int)(COL_DARK_LIME::instance.shortValue))); + DAT_PencilRenderCore::instance.surfaceTarget = OpenSHC::Rendering::Enums::RT_SCREEN_MENU; + } + + } +} +} diff --git a/src/OpenSHC/UI/DisplayElements/RenderNoTreeGrowthTextDisplayElement.cpp b/src/OpenSHC/UI/DisplayElements/RenderNoTreeGrowthTextDisplayElement.cpp new file mode 100644 index 000000000..b08f357bf --- /dev/null +++ b/src/OpenSHC/UI/DisplayElements/RenderNoTreeGrowthTextDisplayElement.cpp @@ -0,0 +1,26 @@ +#include "OpenSHC/Text/TextManager.func.hpp" +#include "OpenSHC/UI/DisplayElements.func.hpp" +#include "OpenSHC/UI/Rendering.func.hpp" +#include "OpenSHC/Text/TextAlignment.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" +#include "OpenSHC/string-literals.hpp" + +#include "OpenSHC/Globals/DAT_TextManagerObject.hpp" + +namespace OpenSHC { +namespace UI { + namespace DisplayElements { + + using OpenSHC::Text::TextAlignment; + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x004AFB00 + void RenderNoTreeGrowthTextDisplayElement(int posX, int posY, DWORD elementState) + { + MACRO_CALL_MEMBER(OpenSHC::Text::TextManager_Func::renderInGameTextWithShadow, DAT_TextManagerObject::ptr)( + s_No_tree_growth_005a779c, posX, posY, OpenSHC::Text::TTA_LEFT, 0x80ff, 0, 0x11, FALSE, 0); + } + + } +} +} diff --git a/src/OpenSHC/UI/DisplayElements/RenderResourceMissing1DisplayElement.cpp b/src/OpenSHC/UI/DisplayElements/RenderResourceMissing1DisplayElement.cpp new file mode 100644 index 000000000..aaf3eb480 --- /dev/null +++ b/src/OpenSHC/UI/DisplayElements/RenderResourceMissing1DisplayElement.cpp @@ -0,0 +1,20 @@ +#include "OpenSHC/Audio/MissingResourceState.func.hpp" +#include "OpenSHC/UI/DisplayElements.func.hpp" +#include "OpenSHC/UI/Rendering.func.hpp" + +#include "OpenSHC/Globals/DAT_MissingResourceState.hpp" + +namespace OpenSHC { +namespace UI { + namespace DisplayElements { + + // FUNCTION: STRONGHOLDCRUSADER 0x004AF820 + void RenderResourceMissing1DisplayElement(int posX, int posY, DWORD elementState) + { + MACRO_CALL_MEMBER(OpenSHC::Audio::MissingResourceState_Func::renderResourceMissingText, + DAT_MissingResourceState::ptr)(posX, posY, elementState, 1); + } + + } +} +} diff --git a/src/OpenSHC/UI/DisplayElements/RenderResourceMissing2DisplayElement.cpp b/src/OpenSHC/UI/DisplayElements/RenderResourceMissing2DisplayElement.cpp new file mode 100644 index 000000000..cfb6fde6c --- /dev/null +++ b/src/OpenSHC/UI/DisplayElements/RenderResourceMissing2DisplayElement.cpp @@ -0,0 +1,20 @@ +#include "OpenSHC/Audio/MissingResourceState.func.hpp" +#include "OpenSHC/UI/DisplayElements.func.hpp" +#include "OpenSHC/UI/Rendering.func.hpp" + +#include "OpenSHC/Globals/DAT_MissingResourceState.hpp" + +namespace OpenSHC { +namespace UI { + namespace DisplayElements { + + // FUNCTION: STRONGHOLDCRUSADER 0x004AF840 + void RenderResourceMissing2DisplayElement(int posX, int posY, DWORD elementState) + { + MACRO_CALL_MEMBER(OpenSHC::Audio::MissingResourceState_Func::renderResourceMissingText, + DAT_MissingResourceState::ptr)(posX, posY, elementState, 2); + } + + } +} +} diff --git a/src/OpenSHC/UI/DisplayElements/RenderUnknownDisplayElement7.cpp b/src/OpenSHC/UI/DisplayElements/RenderUnknownDisplayElement7.cpp new file mode 100644 index 000000000..94fc228bb --- /dev/null +++ b/src/OpenSHC/UI/DisplayElements/RenderUnknownDisplayElement7.cpp @@ -0,0 +1,27 @@ +#include "OpenSHC/Text/TextManager.func.hpp" +#include "OpenSHC/UI/DisplayElements.func.hpp" +#include "OpenSHC/UI/Rendering.func.hpp" +#include "OpenSHC/Text/TextAlignment.hpp" +#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" + +#include "OpenSHC/Globals/DAT_TextManagerObject.hpp" +#include "OpenSHC/Globals/DAT_UnknownStopwatch.hpp" + +namespace OpenSHC { +namespace UI { + namespace DisplayElements { + + using OpenSHC::Text::TextAlignment; + using OpenSHC::WindowsHelper::Enums::BOOLEnum; + + // FUNCTION: STRONGHOLDCRUSADER 0x004AFA50 + void RenderUnknownDisplayElement7(int posX, int posY, DWORD elementState) + { + MACRO_CALL_MEMBER(OpenSHC::Text::TextManager_Func::renderNumber2, DAT_TextManagerObject::ptr)( + DAT_UnknownStopwatch::instance.duration_0x0, posX, posY + 5, OpenSHC::Text::TTA_RIGHT, 0x80ff, 0, 0xf, + FALSE, 0); + } + + } +} +} diff --git a/src/OpenSHC/UI/DisplayElements/TogglePlayerPingDisplayElementUnk.cpp b/src/OpenSHC/UI/DisplayElements/TogglePlayerPingDisplayElementUnk.cpp new file mode 100644 index 000000000..c121260c6 --- /dev/null +++ b/src/OpenSHC/UI/DisplayElements/TogglePlayerPingDisplayElementUnk.cpp @@ -0,0 +1,26 @@ +#include "OpenSHC/UI/DisplayElements.func.hpp" +#include "OpenSHC/UI/Rendering.func.hpp" +#include "OpenSHC/UI/DisplayElement.hpp" +#include "OpenSHC/UI/Enums/DisplayElementID.hpp" + +namespace OpenSHC { +namespace UI { + namespace DisplayElements { + + using OpenSHC::UI::DisplayElement; + using OpenSHC::UI::Enums::DisplayElementID; + + // FUNCTION: STRONGHOLDCRUSADER 0x004AF6B0 + void TogglePlayerPingDisplayElementUnk(DisplayElementID displayElementID, uint toggleValue) + { + DisplayElement* _displayElement + = MACRO_CALL(OpenSHC::UI::DisplayElements_Func::FindDisplayElementWithID)(displayElementID); + if (_displayElement != NULL) { + _displayElement->displayDuration_0x14 = -1; + _displayElement->elementStateUnk_0xc = _displayElement->elementStateUnk_0xc != 0 ? 0 : toggleValue; + } + } + + } +} +} diff --git a/src/OpenSHC/UI/FindDisplayElementWithID.cpp b/src/OpenSHC/UI/FindDisplayElementWithID.cpp deleted file mode 100644 index 371514232..000000000 --- a/src/OpenSHC/UI/FindDisplayElementWithID.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#include "OpenSHC/UI.func.hpp" -#include "OpenSHC/UI/DisplayElement.hpp" - -#include "OpenSHC/Globals/DAT_PointerToDisplayElementStackTop.hpp" - -namespace OpenSHC { - -using OpenSHC::UI::DisplayElement; - -// FUNCTION: STRONGHOLDCRUSADER 0x004AF630 -DisplayElement* UI::FindDisplayElementWithID(int elementID) -{ - DisplayElement* _pCurrent = DAT_PointerToDisplayElementStackTop::instance; - while (_pCurrent != NULL) { - if (_pCurrent->elementID_0x8 == elementID) - return _pCurrent; - _pCurrent = _pCurrent->nextDisplayElement_0x20; - } - return NULL; -} - -} diff --git a/src/OpenSHC/UI/Helpers/CaptureCurrentTimeToUnknownTime01.cpp b/src/OpenSHC/UI/Helpers/CaptureCurrentTimeToUnknownTime01.cpp new file mode 100644 index 000000000..b028ec435 --- /dev/null +++ b/src/OpenSHC/UI/Helpers/CaptureCurrentTimeToUnknownTime01.cpp @@ -0,0 +1,14 @@ +#include "OpenSHC/UI/Helpers.func.hpp" + +#include "OpenSHC/Globals/DAT_UnknownTime_01.hpp" + +namespace OpenSHC { +namespace UI { + namespace Helpers { + + // FUNCTION: STRONGHOLDCRUSADER 0x004B9610 + void CaptureCurrentTimeToUnknownTime01() { DAT_UnknownTime_01::instance = timeGetTime(); } + + } +} +} diff --git a/src/OpenSHC/UI/Helpers/CheckDisplayElementByIDAndSetForUnlimitedDisplay.cpp b/src/OpenSHC/UI/Helpers/CheckDisplayElementByIDAndSetForUnlimitedDisplay.cpp deleted file mode 100644 index ec8e1b5f4..000000000 --- a/src/OpenSHC/UI/Helpers/CheckDisplayElementByIDAndSetForUnlimitedDisplay.cpp +++ /dev/null @@ -1,31 +0,0 @@ -#include "OpenSHC/UI.func.hpp" -#include "OpenSHC/UI/Helpers.func.hpp" -#include "OpenSHC/UI/DisplayElement.hpp" -#include "OpenSHC/UI/Enums/DisplayElementID.hpp" -#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" - -#include "OpenSHC/Globals/BOOL_RelatedToInitialGranaryAndKeepPlacement.hpp" - -namespace OpenSHC { -namespace UI { - - using OpenSHC::UI::DisplayElement; - using OpenSHC::UI::Enums::DisplayElementID; - using OpenSHC::WindowsHelper::Enums::BOOLEnum; - - // FUNCTION: STRONGHOLDCRUSADER 0x004AF650 - void Helpers::CheckDisplayElementByIDAndSetForUnlimitedDisplay( - DisplayElementID displayElementID, dword elementState) - { - DisplayElement* _displayElementPtr = MACRO_CALL(OpenSHC::UI_Func::FindDisplayElementWithID)(displayElementID); - if (_displayElementPtr != NULL) { - if (_displayElementPtr->elementStateUnk_0xc != elementState) { - BOOL_RelatedToInitialGranaryAndKeepPlacement::instance = FALSE; - } - _displayElementPtr->elementStateUnk_0xc = elementState; - _displayElementPtr->displayDuration_0x14 = -1; - } - } - -} -} diff --git a/src/OpenSHC/UI/Helpers/DisableMercPostPortraits.cpp b/src/OpenSHC/UI/Helpers/DisableMercPostPortraits.cpp new file mode 100644 index 000000000..09eb1fb8e --- /dev/null +++ b/src/OpenSHC/UI/Helpers/DisableMercPostPortraits.cpp @@ -0,0 +1,14 @@ +#include "OpenSHC/UI/Helpers.func.hpp" + +#include "OpenSHC/Globals/DAT_DisableMercPostPortraits.hpp" + +namespace OpenSHC { +namespace UI { + namespace Helpers { + + // FUNCTION: STRONGHOLDCRUSADER 0x00466E10 + void DisableMercPostPortraits() { DAT_DisableMercPostPortraits::instance = 1; } + + } +} +} diff --git a/src/OpenSHC/UI/Helpers/GetIfDisplayElementStateNotZero.cpp b/src/OpenSHC/UI/Helpers/GetIfDisplayElementStateNotZero.cpp deleted file mode 100644 index 0430c33d4..000000000 --- a/src/OpenSHC/UI/Helpers/GetIfDisplayElementStateNotZero.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#include "OpenSHC/UI.func.hpp" -#include "OpenSHC/UI/Helpers.func.hpp" -#include "OpenSHC/UI/DisplayElement.hpp" -#include "OpenSHC/UI/Enums/DisplayElementID.hpp" -#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" - -namespace OpenSHC { -namespace UI { - - using OpenSHC::UI::DisplayElement; - using OpenSHC::UI::Enums::DisplayElementID; - using OpenSHC::WindowsHelper::Enums::BOOLEnum; - - // FUNCTION: STRONGHOLDCRUSADER 0x004AF6E0 - BOOLEnum Helpers::GetIfDisplayElementStateNotZero(DisplayElementID displayElementID) - { - DisplayElement* _displayElementPtr = MACRO_CALL(OpenSHC::UI_Func::FindDisplayElementWithID)(displayElementID); - if (_displayElementPtr != NULL) { - return _displayElementPtr->elementStateUnk_0xc != 0; - } - return FALSE; - } - -} -} diff --git a/src/OpenSHC/UI/Helpers/LoadTGX_shc_back.cpp b/src/OpenSHC/UI/Helpers/LoadTGX_shc_back.cpp new file mode 100644 index 000000000..51d28f5ba --- /dev/null +++ b/src/OpenSHC/UI/Helpers/LoadTGX_shc_back.cpp @@ -0,0 +1,19 @@ +#include "OpenSHC/UI/Helpers.func.hpp" +#include "OpenSHC/UI/Rendering/TextureRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_TextureRenderCoreObject.hpp" + +namespace OpenSHC { +namespace UI { + namespace Helpers { + + // FUNCTION: STRONGHOLDCRUSADER 0x00424BD0 + void LoadTGX_shc_back() + { + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::TextureRenderCore_Func::loadGfxFile, + DAT_TextureRenderCoreObject::ptr)("shc_back.tgx"); + } + + } +} +} diff --git a/src/OpenSHC/UI/Helpers/PlayAMessageFromAI.cpp b/src/OpenSHC/UI/Helpers/PlayAMessageFromAI.cpp new file mode 100644 index 000000000..7d1b5c752 --- /dev/null +++ b/src/OpenSHC/UI/Helpers/PlayAMessageFromAI.cpp @@ -0,0 +1,30 @@ +#include "OpenSHC/Audio/SFX/SFXState.func.hpp" +#include "OpenSHC/UI/Helpers.func.hpp" + +#include "OpenSHC/Globals/DAT_MissionAestheticsDefinedData.hpp" +#include "OpenSHC/Globals/DAT_SFXState.hpp" + +namespace OpenSHC { +namespace UI { + namespace Helpers { + + /* + Plays a WAV sound effect from the mission aesthetics data table. param_1 is the column index + (0-16) and param_2 is the row index (1-33). Bounds-checks both params and calls + SFXState::playWAVSFX with the resolved filename pointer. + + renamed by: Claude Sonnet 4.6 + */ + + // FUNCTION: STRONGHOLDCRUSADER 0x004B7F60 + void PlayAMessageFromAI(uint param_1, int param_2) + { + if ((param_1 < 0x11) && (param_2 - 1U < 0x21)) { + MACRO_CALL_MEMBER(OpenSHC::Audio::SFX::SFXState_Func::playWAVSFX, DAT_SFXState::ptr)((char const*) + DAT_MissionAestheticsDefinedData::instance.field92_0x170[param_2 * 0x11 + param_1 + -0xc]); + } + } + + } +} +} diff --git a/src/OpenSHC/UI/Helpers/RestoreScenarioGold.cpp b/src/OpenSHC/UI/Helpers/RestoreScenarioGold.cpp new file mode 100644 index 000000000..191ed7be0 --- /dev/null +++ b/src/OpenSHC/UI/Helpers/RestoreScenarioGold.cpp @@ -0,0 +1,18 @@ +#include "OpenSHC/UI/Helpers.func.hpp" + +#include "OpenSHC/Globals/DAT_CopyOfScenarioGold.hpp" +#include "OpenSHC/Globals/DAT_GameState.hpp" + +namespace OpenSHC { +namespace UI { + namespace Helpers { + + // FUNCTION: STRONGHOLDCRUSADER 0x004B8210 + void RestoreScenarioGold() + { + DAT_GameState::instance.mapAndTime.scenarioGold = (short)DAT_CopyOfScenarioGold::instance; + } + + } +} +} diff --git a/src/OpenSHC/UI/Helpers/SetTutorialHintActiveWithTimestamp.cpp b/src/OpenSHC/UI/Helpers/SetTutorialHintActiveWithTimestamp.cpp new file mode 100644 index 000000000..3f2d9ac4c --- /dev/null +++ b/src/OpenSHC/UI/Helpers/SetTutorialHintActiveWithTimestamp.cpp @@ -0,0 +1,19 @@ +#include "OpenSHC/UI/Helpers.func.hpp" + +#include "OpenSHC/Globals/DAT_00df5564.hpp" +#include "OpenSHC/Globals/DWORD_00df5568.hpp" + +namespace OpenSHC { +namespace UI { + namespace Helpers { + + // FUNCTION: STRONGHOLDCRUSADER 0x004BC770 + void SetTutorialHintActiveWithTimestamp() + { + DAT_00df5564::instance = 1; + DWORD_00df5568::instance = timeGetTime(); + } + + } +} +} diff --git a/src/OpenSHC/UI/Helpers/ShowProgressBarSaveLoadDialog.cpp b/src/OpenSHC/UI/Helpers/ShowProgressBarSaveLoadDialog.cpp new file mode 100644 index 000000000..03602523f --- /dev/null +++ b/src/OpenSHC/UI/Helpers/ShowProgressBarSaveLoadDialog.cpp @@ -0,0 +1,28 @@ +#include "OpenSHC/UI/Helpers.func.hpp" +#include "OpenSHC/UI/MenuItems/ProgressBarBox.func.hpp" +#include "OpenSHC/UI/MenuModalComposition.func.hpp" +#include "OpenSHC/UI/Enums/MenuModalType.hpp" + +#include "OpenSHC/Globals/DAT_MenuModalComposition1.hpp" +#include "OpenSHC/Globals/DAT_MenuTextInputState.hpp" + +namespace OpenSHC { +namespace UI { + namespace Helpers { + + using OpenSHC::UI::Enums::MenuModalType; + + // FUNCTION: STRONGHOLDCRUSADER 0x00495800 + void ShowProgressBarSaveLoadDialog(int param_1) + { + DAT_MenuTextInputState::instance.DAT_MenuOptionsActionParameter = (param_1 != 0 ? 0xe : 0) + 0x20; + MACRO_CALL_MEMBER(OpenSHC::UI::MenuModalComposition_Func::activateModalDialog2, + DAT_MenuModalComposition1::ptr)(OpenSHC::UI::Enums::MMT_PROGRESS_BAR_BOX); + DAT_MenuModalComposition1::instance.activeModalDialogID = Enums::MMT_PROGRESS_BAR_BOX; + MACRO_CALL(OpenSHC::UI::MenuItems::ProgressBarBox_Func:: + MenuItemActionHandler_ProgressBarBox_LoadAndSaveGameButtonLogic)(0); + } + + } +} +} diff --git a/src/OpenSHC/UI/Helpers/TacticalPowersFill.cpp b/src/OpenSHC/UI/Helpers/TacticalPowersFill.cpp new file mode 100644 index 000000000..c825a77f2 --- /dev/null +++ b/src/OpenSHC/UI/Helpers/TacticalPowersFill.cpp @@ -0,0 +1,23 @@ +#include "OpenSHC/UI/Helpers.func.hpp" + +#include "OpenSHC/Globals/DAT_MissionDefinedData.hpp" +#include "OpenSHC/Globals/DAT_TacticalPowersHelpTextDisplayBool.hpp" + +namespace OpenSHC { +namespace UI { + namespace Helpers { + + // FUNCTION: STRONGHOLDCRUSADER 0x004D9D90 + void TacticalPowersFill() + { + if ((DAT_TacticalPowersHelpTextDisplayBool::instance != '\0') + && (DAT_MissionDefinedData::instance.field39_0x1370 + = DAT_MissionDefinedData::instance.field39_0x1370 + -1, + DAT_MissionDefinedData::instance.field39_0x1370 == 0)) { + DAT_TacticalPowersHelpTextDisplayBool::instance = '\0'; + } + } + + } +} +} diff --git a/src/OpenSHC/UI/LoadTGX_shc_back.cpp b/src/OpenSHC/UI/LoadTGX_shc_back.cpp deleted file mode 100644 index cbaa77415..000000000 --- a/src/OpenSHC/UI/LoadTGX_shc_back.cpp +++ /dev/null @@ -1,15 +0,0 @@ -#include "OpenSHC/UI.func.hpp" -#include "OpenSHC/UI/Rendering/TextureRenderCore.func.hpp" - -#include "OpenSHC/Globals/DAT_TextureRenderCoreObject.hpp" - -namespace OpenSHC { - -// FUNCTION: STRONGHOLDCRUSADER 0x00424BD0 -void UI::LoadTGX_shc_back() -{ - MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::TextureRenderCore_Func::loadGfxFile, DAT_TextureRenderCoreObject::ptr)( - "shc_back.tgx"); -} - -} diff --git a/src/OpenSHC/UI/MenuItemFunction_General_Unknown.cpp b/src/OpenSHC/UI/MenuItemFunction_General_Unknown.cpp deleted file mode 100644 index 101381b38..000000000 --- a/src/OpenSHC/UI/MenuItemFunction_General_Unknown.cpp +++ /dev/null @@ -1,10 +0,0 @@ -#include "OpenSHC/UI.func.hpp" - -#include "OpenSHC/Globals/DAT_StopHandlingMenuItems.hpp" - -namespace OpenSHC { - -// FUNCTION: STRONGHOLDCRUSADER 0x00440410 -void UI::MenuItemFunction_General_Unknown(int param_1, ...) { DAT_StopHandlingMenuItems::instance = 0; } - -} diff --git a/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemActionHandler_BuildMenu_SomeKeepAndGranaryCheckUnk.cpp b/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemActionHandler_BuildMenu_SomeKeepAndGranaryCheckUnk.cpp index 5edf214bc..a09cfbe6a 100644 --- a/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemActionHandler_BuildMenu_SomeKeepAndGranaryCheckUnk.cpp +++ b/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemActionHandler_BuildMenu_SomeKeepAndGranaryCheckUnk.cpp @@ -1,6 +1,6 @@ #include "OpenSHC/Game/GameCore.func.hpp" #include "OpenSHC/Game/GameStateStructures.func.hpp" -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuItems/BuildMenu.func.hpp" #include "OpenSHC/UI/Enums/BuildMenuTabType.hpp" #include "OpenSHC/UI/Enums/BuildingsAndStatusMenuTabType.hpp" #include "OpenSHC/UI/Enums/MenuViewType.hpp" diff --git a/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_BuildingIcons.cpp b/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_BuildingIcons.cpp index 3724ec2ae..8c14214dc 100644 --- a/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_BuildingIcons.cpp +++ b/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_BuildingIcons.cpp @@ -1,5 +1,7 @@ #include "OpenSHC/Map/MapPropertiesState.func.hpp" -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuItems/BuildMenu.func.hpp" +#include "OpenSHC/UI/MenuItems/General.func.hpp" +#include "OpenSHC/Commands/MappersEnum.hpp" #include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" #include "OpenSHC/Globals/DAT_ButtonUnknownZero.hpp" @@ -10,15 +12,16 @@ namespace UI { namespace MenuItems { namespace BuildMenu { + using OpenSHC::Commands::MappersEnum; using OpenSHC::WindowsHelper::Enums::BOOLEnum; // FUNCTION: STRONGHOLDCRUSADER 0x004668F0 - void MenuItemRenderFunction_BuildMenu_BuildingIcons(int param_1, ...) + void MenuItemRenderFunction_BuildMenu_BuildingIcons(int mapper, ...) { if (MACRO_CALL_MEMBER(OpenSHC::Map::MapPropertiesState_Func::isMapperAvailable, - DAT_MapPropertiesState::ptr)((MappersEnum)param_1) + DAT_MapPropertiesState::ptr)((MappersEnum)mapper) != FALSE) { - MACRO_CALL(OpenSHC::UI_Func:: + MACRO_CALL(OpenSHC::UI::MenuItems::General_Func:: MenuItemRenderFunction_General_RenderCurrentButtonWithPossibleAlphaTexOnScreenMenuSurface)(); DAT_ButtonUnknownZero::instance = 0; return; diff --git a/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_BuildingKeepSubcategoryButton.cpp b/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_BuildingKeepSubcategoryButton.cpp index a33dcd6f1..7d7809f8d 100644 --- a/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_BuildingKeepSubcategoryButton.cpp +++ b/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_BuildingKeepSubcategoryButton.cpp @@ -1,4 +1,5 @@ -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuItems/BuildMenu.func.hpp" +#include "OpenSHC/UI/MenuItems/General.func.hpp" #include "OpenSHC/Game/GameMode2.hpp" #include "OpenSHC/Globals/DAT_ButtonUnknownZero.hpp" @@ -20,7 +21,7 @@ namespace UI { return; } DAT_ButtonUnknownZero::instance = 0; - MACRO_CALL(OpenSHC::UI_Func:: + MACRO_CALL(OpenSHC::UI::MenuItems::General_Func:: MenuItemRenderFunction_General_RenderCurrentButtonWithPossibleAlphaTexOnScreenMenuSurface)(); } diff --git a/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_BuildingSubcategoryButton.cpp b/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_BuildingSubcategoryButton.cpp index e51005174..fe20857fe 100644 --- a/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_BuildingSubcategoryButton.cpp +++ b/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_BuildingSubcategoryButton.cpp @@ -1,5 +1,6 @@ #include "OpenSHC/Map/MapPropertiesState.func.hpp" -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuItems/BuildMenu.func.hpp" +#include "OpenSHC/UI/MenuItems/General.func.hpp" #include "OpenSHC/Globals/DAT_ButtonUnknownZero.hpp" #include "OpenSHC/Globals/DAT_MapPropertiesState.hpp" @@ -15,7 +16,7 @@ namespace UI { if (MACRO_CALL_MEMBER(OpenSHC::Map::MapPropertiesState_Func::isMercRecruitableForBuildingType, DAT_MapPropertiesState::ptr)(param_1) != 0) { - MACRO_CALL(OpenSHC::UI_Func:: + MACRO_CALL(OpenSHC::UI::MenuItems::General_Func:: MenuItemRenderFunction_General_RenderCurrentButtonWithPossibleAlphaTexOnScreenMenuSurface)(); DAT_ButtonUnknownZero::instance = 0; return; diff --git a/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_CurrentlySelectedTroopsDeselectHelper.cpp b/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_CurrentlySelectedTroopsDeselectHelper.cpp index 700745bb7..27f3d1efc 100644 --- a/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_CurrentlySelectedTroopsDeselectHelper.cpp +++ b/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_CurrentlySelectedTroopsDeselectHelper.cpp @@ -1,4 +1,4 @@ -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuItems/BuildMenu.func.hpp" #include "OpenSHC/Globals/DAT_ButtonUnknownZero.hpp" #include "OpenSHC/Globals/DAT_UnitsState.hpp" diff --git a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_ArmySwitchButton.cpp b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_ArmySwitchButton.cpp index dc0c1a7bd..eff9eaf41 100644 --- a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_ArmySwitchButton.cpp +++ b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_ArmySwitchButton.cpp @@ -1,4 +1,4 @@ -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuItems/BuildingAndStatusMenu.func.hpp" #include "OpenSHC/Globals/DAT_00b95b68.hpp" diff --git a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_BuildingHelpTextButton.cpp b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_BuildingHelpTextButton.cpp index ff8c5a00d..82874bddb 100644 --- a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_BuildingHelpTextButton.cpp +++ b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_BuildingHelpTextButton.cpp @@ -1,5 +1,5 @@ #include "OpenSHC/Text/TextEditorState.func.hpp" -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuItems/BuildingAndStatusMenu.func.hpp" #include "OpenSHC/Globals/DAT_BuildingsState.hpp" #include "OpenSHC/Globals/DAT_TextEditorState.hpp" diff --git a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_BuildingSleep.cpp b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_BuildingSleep.cpp index 0656667ed..56e18d480 100644 --- a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_BuildingSleep.cpp +++ b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_BuildingSleep.cpp @@ -1,5 +1,6 @@ #include "OpenSHC/Synchrony/GameSynchronyState.func.hpp" -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Helpers.func.hpp" +#include "OpenSHC/UI/MenuItems/BuildingAndStatusMenu.func.hpp" #include "OpenSHC/Commands/GameCommandType.hpp" #include "OpenSHC/Game/GameMode2.hpp" @@ -19,7 +20,7 @@ namespace UI { void MenuItemActionHandler_BuildingAndStatusMenu_BuildingSleep() { if (DAT_GameCore::instance.gameMode_2 == OpenSHC::Game::GM_CRUSADER_TUTORIAL) { - MACRO_CALL(OpenSHC::UI_Func::SetTutorialHintActiveWithTimestamp)(); + MACRO_CALL(OpenSHC::UI::Helpers_Func::SetTutorialHintActiveWithTimestamp)(); return; } DAT_GameSynchronyState::instance.DAT_GameCommandParam0 diff --git a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_MarketMenuChangeButtons.cpp b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_MarketMenuChangeButtons.cpp index 478d14684..fbcc4fc73 100644 --- a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_MarketMenuChangeButtons.cpp +++ b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_MarketMenuChangeButtons.cpp @@ -1,5 +1,5 @@ #include "OpenSHC/Game/GameCore.func.hpp" -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuItems/BuildingAndStatusMenu.func.hpp" #include "OpenSHC/UI/Enums/MenuViewType.hpp" #include "OpenSHC/Globals/DAT_GameCore.hpp" diff --git a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_OutpostUnitSelection.cpp b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_OutpostUnitSelection.cpp index 5b839db64..b905a67a0 100644 --- a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_OutpostUnitSelection.cpp +++ b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_OutpostUnitSelection.cpp @@ -1,4 +1,4 @@ -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuItems/BuildingAndStatusMenu.func.hpp" #include "OpenSHC/Globals/DAT_BuildingsState.hpp" diff --git a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_PopularityMenuSwitchButtonUnk.cpp b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_PopularityMenuSwitchButtonUnk.cpp index d7a090ce4..6dc41abf1 100644 --- a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_PopularityMenuSwitchButtonUnk.cpp +++ b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_PopularityMenuSwitchButtonUnk.cpp @@ -1,4 +1,4 @@ -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuItems/BuildingAndStatusMenu.func.hpp" #include "OpenSHC/Globals/DAT_GameCore.hpp" @@ -10,7 +10,7 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x0043F2B0 void MenuItemActionHandler_BuildingAndStatusMenu_PopularityMenuSwitchButtonUnk() { - DAT_GameCore::instance.field80_0x144 = DAT_GameCore::instance.field80_0x144 ^ 1; + DAT_GameCore::instance.field77_0x144 ^= 1; } } diff --git a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_StopBuildingOrPeasantBinkPlayback.cpp b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_StopBuildingOrPeasantBinkPlayback.cpp index 5374610cd..70d4113b8 100644 --- a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_StopBuildingOrPeasantBinkPlayback.cpp +++ b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_StopBuildingOrPeasantBinkPlayback.cpp @@ -1,5 +1,5 @@ #include "OpenSHC/Rendering/Bink/BinkControlClass.func.hpp" -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuItems/BuildingAndStatusMenu.func.hpp" #include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" #include "OpenSHC/Globals/DAT_BinkControlState.hpp" diff --git a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_UnknownMin1Unk.cpp b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_UnknownMin1Unk.cpp index 11fc8767b..cdd6666a2 100644 --- a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_UnknownMin1Unk.cpp +++ b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_UnknownMin1Unk.cpp @@ -1,4 +1,4 @@ -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuItems/BuildingAndStatusMenu.func.hpp" #include "OpenSHC/Globals/INT_00df335c.hpp" diff --git a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_Unknown_Countdown.cpp b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_Unknown_Countdown.cpp index 58f4683cb..eae51b143 100644 --- a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_Unknown_Countdown.cpp +++ b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_Unknown_Countdown.cpp @@ -1,4 +1,4 @@ -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuItems/BuildingAndStatusMenu.func.hpp" #include "OpenSHC/Globals/DAT_GameCore.hpp" diff --git a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_Unknown_Min1.cpp b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_Unknown_Min1.cpp index 8abba8c1f..a2f272fc3 100644 --- a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_Unknown_Min1.cpp +++ b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_Unknown_Min1.cpp @@ -1,4 +1,4 @@ -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuItems/BuildingAndStatusMenu.func.hpp" #include "OpenSHC/Globals/DAT_00df3350.hpp" diff --git a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemRenderFunction_BuildingAndStatusMenu_ArmyStatusSwitchButton.cpp b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemRenderFunction_BuildingAndStatusMenu_ArmyStatusSwitchButton.cpp index 5890c469a..9545bd7a3 100644 --- a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemRenderFunction_BuildingAndStatusMenu_ArmyStatusSwitchButton.cpp +++ b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemRenderFunction_BuildingAndStatusMenu_ArmyStatusSwitchButton.cpp @@ -1,4 +1,5 @@ -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuItems/BuildingAndStatusMenu.func.hpp" +#include "OpenSHC/UI/MenuItems/General.func.hpp" namespace OpenSHC { namespace UI { @@ -8,7 +9,7 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x0043FCA0 void MenuItemRenderFunction_BuildingAndStatusMenu_ArmyStatusSwitchButton() { - MACRO_CALL(OpenSHC::UI_Func:: + MACRO_CALL(OpenSHC::UI::MenuItems::General_Func:: MenuItemRenderFunction_General_RenderCurrentButtonWithPossibleAlphaTexOnScreenMenuSurface)(); } diff --git a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemRenderFunction_BuildingAndStatusMenu_BarracksAndMercenaryPostHelpText.cpp b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemRenderFunction_BuildingAndStatusMenu_BarracksAndMercenaryPostHelpText.cpp index bfb9ad5db..5e1f9e4a9 100644 --- a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemRenderFunction_BuildingAndStatusMenu_BarracksAndMercenaryPostHelpText.cpp +++ b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemRenderFunction_BuildingAndStatusMenu_BarracksAndMercenaryPostHelpText.cpp @@ -1,4 +1,5 @@ -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuItems/BuildingAndStatusMenu.func.hpp" +#include "OpenSHC/UI/MenuItems/General.func.hpp" #include "OpenSHC/Globals/DAT_BuildingsState.hpp" @@ -11,7 +12,7 @@ namespace UI { void MenuItemRenderFunction_BuildingAndStatusMenu_BarracksAndMercenaryPostHelpText(int param_1, ...) { if (DAT_BuildingsState::instance.field24_0x18e04c != 0) { - MACRO_CALL(OpenSHC::UI_Func:: + MACRO_CALL(OpenSHC::UI::MenuItems::General_Func:: MenuItemRenderFunction_General_RenderCurrentButtonWithPossibleAlphaTexOnScreenMenuSurface)(); } } diff --git a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemRenderFunction_BuildingAndStatusMenu_BuildingHelpTextButton.cpp b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemRenderFunction_BuildingAndStatusMenu_BuildingHelpTextButton.cpp index c112383c3..2595a5ad3 100644 --- a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemRenderFunction_BuildingAndStatusMenu_BuildingHelpTextButton.cpp +++ b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemRenderFunction_BuildingAndStatusMenu_BuildingHelpTextButton.cpp @@ -1,4 +1,5 @@ -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuItems/BuildingAndStatusMenu.func.hpp" +#include "OpenSHC/UI/MenuItems/General.func.hpp" #include "OpenSHC/UI/Enums/BuildingsAndStatusMenuTabType.hpp" #include "OpenSHC/Globals/DAT_BuildingsState.hpp" @@ -21,7 +22,7 @@ namespace UI { || (DAT_GameCore::instance.activeMenuTab.tabType == OpenSHC::UI::Enums::BASMTT_MERCENARYPOST)) { DAT_ButtonUnknownZero::instance = 1; } else if (DAT_BuildingsState::instance.field24_0x18e04c != 0) { - MACRO_CALL(OpenSHC::UI_Func:: + MACRO_CALL(OpenSHC::UI::MenuItems::General_Func:: MenuItemRenderFunction_General_RenderCurrentButtonWithPossibleAlphaTexOnScreenMenuSurface)(); } } diff --git a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemRenderFunction_BuildingAndStatusMenu_PopularityMenuSwitchButton.cpp b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemRenderFunction_BuildingAndStatusMenu_PopularityMenuSwitchButton.cpp index 6cf723304..aae9f9eea 100644 --- a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemRenderFunction_BuildingAndStatusMenu_PopularityMenuSwitchButton.cpp +++ b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemRenderFunction_BuildingAndStatusMenu_PopularityMenuSwitchButton.cpp @@ -1,4 +1,5 @@ -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuItems/BuildingAndStatusMenu.func.hpp" +#include "OpenSHC/UI/MenuItems/General.func.hpp" #include "OpenSHC/Globals/DAT_CurrentButtonGmDataIndex.hpp" #include "OpenSHC/Globals/DAT_GameCore.hpp" @@ -16,7 +17,7 @@ namespace UI { if (DAT_GameCore::instance.field77_0x144 == 1) { DAT_CurrentButtonGmDataIndex::instance = 0x73; } - MACRO_CALL(OpenSHC::UI_Func:: + MACRO_CALL(OpenSHC::UI::MenuItems::General_Func:: MenuItemRenderFunction_General_RenderCurrentButtonWithPossibleAlphaTexOnScreenMenuSurface)(); } } diff --git a/src/OpenSHC/UI/MenuItems/Chat/MenuItemActionHandler_Chat_SendMessageToPlayer.cpp b/src/OpenSHC/UI/MenuItems/Chat/MenuItemActionHandler_Chat_SendMessageToPlayer.cpp index 1e2879a63..a4d4456c3 100644 --- a/src/OpenSHC/UI/MenuItems/Chat/MenuItemActionHandler_Chat_SendMessageToPlayer.cpp +++ b/src/OpenSHC/UI/MenuItems/Chat/MenuItemActionHandler_Chat_SendMessageToPlayer.cpp @@ -1,4 +1,4 @@ -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuItems/Chat.func.hpp" #include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" diff --git a/src/OpenSHC/UI/MenuItems/Chat/MenuItemActionHandler_Chat_TauntButtons.cpp b/src/OpenSHC/UI/MenuItems/Chat/MenuItemActionHandler_Chat_TauntButtons.cpp index e7b2646c2..97d157280 100644 --- a/src/OpenSHC/UI/MenuItems/Chat/MenuItemActionHandler_Chat_TauntButtons.cpp +++ b/src/OpenSHC/UI/MenuItems/Chat/MenuItemActionHandler_Chat_TauntButtons.cpp @@ -1,5 +1,5 @@ #include "OpenSHC/Synchrony/GameSynchronyState.func.hpp" -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuItems/Chat.func.hpp" #include "OpenSHC/Commands/GameCommandType.hpp" #include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" diff --git a/src/OpenSHC/UI/MenuItems/ChooseNetworkServiceProvider/MenuItemActionHandler_ChooseNetworkServiceProvider_ModemTableRows.cpp b/src/OpenSHC/UI/MenuItems/ChooseNetworkServiceProvider/MenuItemActionHandler_ChooseNetworkServiceProvider_ModemTableRows.cpp index 020ff2535..beb6c4858 100644 --- a/src/OpenSHC/UI/MenuItems/ChooseNetworkServiceProvider/MenuItemActionHandler_ChooseNetworkServiceProvider_ModemTableRows.cpp +++ b/src/OpenSHC/UI/MenuItems/ChooseNetworkServiceProvider/MenuItemActionHandler_ChooseNetworkServiceProvider_ModemTableRows.cpp @@ -1,4 +1,4 @@ -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuItems/ChooseNetworkServiceProvider.func.hpp" #include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" diff --git a/src/OpenSHC/UI/MenuItems/DeleteGameRecord/MenuItemActionHandler_DeleteGameRecord_Main.cpp b/src/OpenSHC/UI/MenuItems/DeleteGameRecord/MenuItemActionHandler_DeleteGameRecord_Main.cpp index c2099dca2..1cec7c789 100644 --- a/src/OpenSHC/UI/MenuItems/DeleteGameRecord/MenuItemActionHandler_DeleteGameRecord_Main.cpp +++ b/src/OpenSHC/UI/MenuItems/DeleteGameRecord/MenuItemActionHandler_DeleteGameRecord_Main.cpp @@ -1,5 +1,5 @@ #include "OpenSHC/Game/Skirmish.func.hpp" -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuItems/DeleteGameRecord.func.hpp" #include "OpenSHC/UI/MenuModalComposition.func.hpp" #include "OpenSHC/UI/Enums/MenuModalType.hpp" #include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" diff --git a/src/OpenSHC/UI/MenuItems/DisableArabTroops/MenuItemActionHandler_DisableArabTroops_Main.cpp b/src/OpenSHC/UI/MenuItems/DisableArabTroops/MenuItemActionHandler_DisableArabTroops_Main.cpp index 27f213935..3ea863b50 100644 --- a/src/OpenSHC/UI/MenuItems/DisableArabTroops/MenuItemActionHandler_DisableArabTroops_Main.cpp +++ b/src/OpenSHC/UI/MenuItems/DisableArabTroops/MenuItemActionHandler_DisableArabTroops_Main.cpp @@ -1,4 +1,4 @@ -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuItems/DisableArabTroops.func.hpp" #include "OpenSHC/UI/MenuModalComposition.func.hpp" #include "OpenSHC/UI/Enums/MenuModalType.hpp" #include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" diff --git a/src/OpenSHC/UI/MenuItems/DisableEuroTroops/MenuItemActionHandler_DisableEuroTroops_Main.cpp b/src/OpenSHC/UI/MenuItems/DisableEuroTroops/MenuItemActionHandler_DisableEuroTroops_Main.cpp index dce8deaa2..05f1ca62a 100644 --- a/src/OpenSHC/UI/MenuItems/DisableEuroTroops/MenuItemActionHandler_DisableEuroTroops_Main.cpp +++ b/src/OpenSHC/UI/MenuItems/DisableEuroTroops/MenuItemActionHandler_DisableEuroTroops_Main.cpp @@ -1,4 +1,4 @@ -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuItems/DisableEuroTroops.func.hpp" #include "OpenSHC/UI/MenuModalComposition.func.hpp" #include "OpenSHC/UI/Enums/MenuModalType.hpp" #include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" diff --git a/src/OpenSHC/UI/MenuItems/DisplayScenarioHelpText/MenuItemRenderFunction_DisplayScenarioHelpText_AnotherButtonUnk.cpp b/src/OpenSHC/UI/MenuItems/DisplayScenarioHelpText/MenuItemRenderFunction_DisplayScenarioHelpText_AnotherButtonUnk.cpp index b219e74e3..f009fee38 100644 --- a/src/OpenSHC/UI/MenuItems/DisplayScenarioHelpText/MenuItemRenderFunction_DisplayScenarioHelpText_AnotherButtonUnk.cpp +++ b/src/OpenSHC/UI/MenuItems/DisplayScenarioHelpText/MenuItemRenderFunction_DisplayScenarioHelpText_AnotherButtonUnk.cpp @@ -1,4 +1,5 @@ -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuItems/DisplayScenarioHelpText.func.hpp" +#include "OpenSHC/UI/MenuItems/General.func.hpp" #include "OpenSHC/Globals/DAT_TextEditorState.hpp" @@ -11,7 +12,7 @@ namespace UI { void MenuItemRenderFunction_DisplayScenarioHelpText_AnotherButtonUnk(int param_1, ...) { if (DAT_TextEditorState::instance.helpSectionHistoryStack[0] != -1) { - MACRO_CALL(OpenSHC::UI_Func:: + MACRO_CALL(OpenSHC::UI::MenuItems::General_Func:: MenuItemRenderFunction_General_RenderCurrentButtonWithPossibleAlphaTexOnScreenMenuSurface)(); } } diff --git a/src/OpenSHC/UI/MenuItems/EnterTitleOnGameStart/MenuItemActionHandler_EnterTitleOnGameStart_Button.cpp b/src/OpenSHC/UI/MenuItems/EnterTitleOnGameStart/MenuItemActionHandler_EnterTitleOnGameStart_Button.cpp index 8be632a41..cdb7315ca 100644 --- a/src/OpenSHC/UI/MenuItems/EnterTitleOnGameStart/MenuItemActionHandler_EnterTitleOnGameStart_Button.cpp +++ b/src/OpenSHC/UI/MenuItems/EnterTitleOnGameStart/MenuItemActionHandler_EnterTitleOnGameStart_Button.cpp @@ -1,6 +1,6 @@ #include "OpenSHC/Game/GameCore.func.hpp" #include "OpenSHC/Text/UserTextHandler.func.hpp" -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuItems/EnterTitleOnGameStart.func.hpp" #include "OpenSHC/UI/MenuModalComposition.func.hpp" #include "OpenSHC/UI/Enums/MenuModalType.hpp" #include "OpenSHC/UI/Enums/MenuViewType.hpp" diff --git a/src/OpenSHC/UI/MenuItems/FindingNetworkSessions/MenuItemActionHandler_FindingNetworkSessions_EnumerateDPlaySessions.cpp b/src/OpenSHC/UI/MenuItems/FindingNetworkSessions/MenuItemActionHandler_FindingNetworkSessions_EnumerateDPlaySessions.cpp index 0fcd21840..49913649f 100644 --- a/src/OpenSHC/UI/MenuItems/FindingNetworkSessions/MenuItemActionHandler_FindingNetworkSessions_EnumerateDPlaySessions.cpp +++ b/src/OpenSHC/UI/MenuItems/FindingNetworkSessions/MenuItemActionHandler_FindingNetworkSessions_EnumerateDPlaySessions.cpp @@ -1,5 +1,5 @@ #include "OpenSHC/Synchrony/GameSynchronyState.func.hpp" -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuItems/FindingNetworkSessions.func.hpp" #include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" diff --git a/src/OpenSHC/UI/MenuItems/FindingNetworkSessions/MenuItemActionHandler_FindingNetworkSessions_TableRows.cpp b/src/OpenSHC/UI/MenuItems/FindingNetworkSessions/MenuItemActionHandler_FindingNetworkSessions_TableRows.cpp index e4fa06f45..81e8844e8 100644 --- a/src/OpenSHC/UI/MenuItems/FindingNetworkSessions/MenuItemActionHandler_FindingNetworkSessions_TableRows.cpp +++ b/src/OpenSHC/UI/MenuItems/FindingNetworkSessions/MenuItemActionHandler_FindingNetworkSessions_TableRows.cpp @@ -1,4 +1,4 @@ -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuItems/FindingNetworkSessions.func.hpp" #include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" diff --git a/src/OpenSHC/UI/MenuItems/General/MenuItemActionHandler_General_DisplayConditionalText.cpp b/src/OpenSHC/UI/MenuItems/General/MenuItemActionHandler_General_DisplayConditionalText.cpp index 6e9050055..027b5e0bc 100644 --- a/src/OpenSHC/UI/MenuItems/General/MenuItemActionHandler_General_DisplayConditionalText.cpp +++ b/src/OpenSHC/UI/MenuItems/General/MenuItemActionHandler_General_DisplayConditionalText.cpp @@ -1,5 +1,5 @@ -#include "OpenSHC/UI.func.hpp" #include "OpenSHC/UI/BottomLeftTextDisplayState.func.hpp" +#include "OpenSHC/UI/MenuItems/General.func.hpp" #include "OpenSHC/Globals/DAT_BottomLeftTextDisplayState.hpp" diff --git a/src/OpenSHC/UI/MenuItems/General/MenuItemActionHandler_General_RemoveConditionalTextOrReleaseHoverUnk.cpp b/src/OpenSHC/UI/MenuItems/General/MenuItemActionHandler_General_RemoveConditionalTextOrReleaseHoverUnk.cpp index 07a54b9eb..36ebbc28b 100644 --- a/src/OpenSHC/UI/MenuItems/General/MenuItemActionHandler_General_RemoveConditionalTextOrReleaseHoverUnk.cpp +++ b/src/OpenSHC/UI/MenuItems/General/MenuItemActionHandler_General_RemoveConditionalTextOrReleaseHoverUnk.cpp @@ -1,5 +1,5 @@ -#include "OpenSHC/UI.func.hpp" #include "OpenSHC/UI/BottomLeftTextDisplayState.func.hpp" +#include "OpenSHC/UI/MenuItems/General.func.hpp" #include "OpenSHC/Globals/DAT_BottomLeftTextDisplayState.hpp" diff --git a/src/OpenSHC/UI/MenuItems/General/MenuItemActionHandler_General_Unknown2.cpp b/src/OpenSHC/UI/MenuItems/General/MenuItemActionHandler_General_Unknown2.cpp index 2a6117523..e559815e6 100644 --- a/src/OpenSHC/UI/MenuItems/General/MenuItemActionHandler_General_Unknown2.cpp +++ b/src/OpenSHC/UI/MenuItems/General/MenuItemActionHandler_General_Unknown2.cpp @@ -1,4 +1,4 @@ -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuItems/General.func.hpp" #include "OpenSHC/Globals/DAT_GameCore.hpp" diff --git a/src/OpenSHC/UI/MenuItems/General/MenuItemFunction_General_Unknown.cpp b/src/OpenSHC/UI/MenuItems/General/MenuItemFunction_General_Unknown.cpp new file mode 100644 index 000000000..bcb525a3f --- /dev/null +++ b/src/OpenSHC/UI/MenuItems/General/MenuItemFunction_General_Unknown.cpp @@ -0,0 +1,16 @@ +#include "OpenSHC/UI/MenuItems/General.func.hpp" + +#include "OpenSHC/Globals/DAT_StopHandlingMenuItems.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuItems { + namespace General { + + // FUNCTION: STRONGHOLDCRUSADER 0x00440410 + void MenuItemFunction_General_Unknown(int param_1, ...) { DAT_StopHandlingMenuItems::instance = 0; } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuItems/InGameMenu/MenuItemActionHandler_InGameMenu_UnknownBinkRelated.cpp b/src/OpenSHC/UI/MenuItems/InGameMenu/MenuItemActionHandler_InGameMenu_UnknownBinkRelated.cpp index 595b66b32..db47fe980 100644 --- a/src/OpenSHC/UI/MenuItems/InGameMenu/MenuItemActionHandler_InGameMenu_UnknownBinkRelated.cpp +++ b/src/OpenSHC/UI/MenuItems/InGameMenu/MenuItemActionHandler_InGameMenu_UnknownBinkRelated.cpp @@ -1,4 +1,4 @@ -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuItems/InGameMenu.func.hpp" #include "OpenSHC/Globals/DAT_BinkControlState.hpp" #include "OpenSHC/Globals/DAT_GameCore.hpp" diff --git a/src/OpenSHC/UI/MenuItems/InGameMenu/MenuItemRenderFunction_InGameMenu_MapEventIconUnk.cpp b/src/OpenSHC/UI/MenuItems/InGameMenu/MenuItemRenderFunction_InGameMenu_MapEventIconUnk.cpp index 88b70ec4b..dfec25105 100644 --- a/src/OpenSHC/UI/MenuItems/InGameMenu/MenuItemRenderFunction_InGameMenu_MapEventIconUnk.cpp +++ b/src/OpenSHC/UI/MenuItems/InGameMenu/MenuItemRenderFunction_InGameMenu_MapEventIconUnk.cpp @@ -1,4 +1,5 @@ -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuItems/General.func.hpp" +#include "OpenSHC/UI/MenuItems/InGameMenu.func.hpp" #include "OpenSHC/Globals/DAT_ButtonUnknownZero.hpp" #include "OpenSHC/Globals/DAT_GameCore.hpp" @@ -16,7 +17,7 @@ namespace UI { if ((DAT_MinimapViewState::instance.spawnMomentCount != 0) && (DAT_GameCore::instance.isBinkVideoPlaying == 0)) { DAT_ButtonUnknownZero::instance = 0; - MACRO_CALL(OpenSHC::UI_Func:: + MACRO_CALL(OpenSHC::UI::MenuItems::General_Func:: MenuItemRenderFunction_General_RenderCurrentButtonWithPossibleAlphaTexOnScreenMenuSurface)(); return; } diff --git a/src/OpenSHC/UI/MenuItems/LobbyMenu/MenuItemRenderFunction_LobbyMenu_Unknown.cpp b/src/OpenSHC/UI/MenuItems/LobbyMenu/MenuItemRenderFunction_LobbyMenu_Unknown.cpp index d705ac7ea..8ecdcaccf 100644 --- a/src/OpenSHC/UI/MenuItems/LobbyMenu/MenuItemRenderFunction_LobbyMenu_Unknown.cpp +++ b/src/OpenSHC/UI/MenuItems/LobbyMenu/MenuItemRenderFunction_LobbyMenu_Unknown.cpp @@ -1,5 +1,5 @@ -#include "OpenSHC/UI.func.hpp" #include "OpenSHC/UI/BottomLeftTextDisplayState.func.hpp" +#include "OpenSHC/UI/MenuItems/LobbyMenu.func.hpp" #include "OpenSHC/UI/Enums/MenuModalType.hpp" #include "OpenSHC/Globals/DAT_BottomLeftTextDisplayState.hpp" diff --git a/src/OpenSHC/UI/MenuItems/NetworkOptions/MenuItemActionHandler_NetworkOptions_LeaveButtonUnk.cpp b/src/OpenSHC/UI/MenuItems/NetworkOptions/MenuItemActionHandler_NetworkOptions_LeaveButtonUnk.cpp index 1f9fd39a3..7fffba49d 100644 --- a/src/OpenSHC/UI/MenuItems/NetworkOptions/MenuItemActionHandler_NetworkOptions_LeaveButtonUnk.cpp +++ b/src/OpenSHC/UI/MenuItems/NetworkOptions/MenuItemActionHandler_NetworkOptions_LeaveButtonUnk.cpp @@ -1,4 +1,4 @@ -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuItems/NetworkOptions.func.hpp" #include "OpenSHC/UI/MenuTextInputState.func.hpp" #include "OpenSHC/Globals/DAT_MenuTextInputState.hpp" diff --git a/src/OpenSHC/UI/MenuItems/SaveLoadMap/MenuItemRenderFunction_SaveLoadMap_Scrollbar.cpp b/src/OpenSHC/UI/MenuItems/SaveLoadMap/MenuItemRenderFunction_SaveLoadMap_Scrollbar.cpp index 52460fd60..6978268bc 100644 --- a/src/OpenSHC/UI/MenuItems/SaveLoadMap/MenuItemRenderFunction_SaveLoadMap_Scrollbar.cpp +++ b/src/OpenSHC/UI/MenuItems/SaveLoadMap/MenuItemRenderFunction_SaveLoadMap_Scrollbar.cpp @@ -1,4 +1,4 @@ -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuItems/SaveLoadMap.func.hpp" #include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" #include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" diff --git a/src/OpenSHC/UI/MenuItems/SaveMap/MenuItemActionHandler_SaveMap_ReturnKeySave.cpp b/src/OpenSHC/UI/MenuItems/SaveMap/MenuItemActionHandler_SaveMap_ReturnKeySave.cpp index 20a041142..bf6c38819 100644 --- a/src/OpenSHC/UI/MenuItems/SaveMap/MenuItemActionHandler_SaveMap_ReturnKeySave.cpp +++ b/src/OpenSHC/UI/MenuItems/SaveMap/MenuItemActionHandler_SaveMap_ReturnKeySave.cpp @@ -1,4 +1,5 @@ -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuItems/SaveLoadMap.func.hpp" +#include "OpenSHC/UI/MenuItems/SaveMap.func.hpp" #include "OpenSHC/Globals/DAT_UserTextHandlerState.hpp" @@ -15,7 +16,7 @@ namespace UI { bVar1 = DAT_UserTextHandlerState::instance.returnPressed != 0; DAT_UserTextHandlerState::instance.returnPressed = 0; if (bVar1) { - MACRO_CALL(OpenSHC::UI_Func::MenuItemActionHandler_SaveLoadMap_Buttons)(3); + MACRO_CALL(OpenSHC::UI::MenuItems::SaveLoadMap_Func::MenuItemActionHandler_SaveLoadMap_Buttons)(3); return; } } diff --git a/src/OpenSHC/UI/MenuItems/SelectCrusade/MenuItemRenderFunction_SelectCrusade_Main.cpp b/src/OpenSHC/UI/MenuItems/SelectCrusade/MenuItemRenderFunction_SelectCrusade_Main.cpp index 544af5fa3..126a4076a 100644 --- a/src/OpenSHC/UI/MenuItems/SelectCrusade/MenuItemRenderFunction_SelectCrusade_Main.cpp +++ b/src/OpenSHC/UI/MenuItems/SelectCrusade/MenuItemRenderFunction_SelectCrusade_Main.cpp @@ -1,4 +1,5 @@ -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuItems/General.func.hpp" +#include "OpenSHC/UI/MenuItems/SelectCrusade.func.hpp" #include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" #include "OpenSHC/Globals/DAT_ButtonCurrentlyInteracting.hpp" @@ -20,7 +21,7 @@ namespace UI { if (DAT_ButtonCurrentlyInteracting::instance != FALSE) { DAT_HighlightedSkirmishType::instance = param_1; } - MACRO_CALL(OpenSHC::UI_Func:: + MACRO_CALL(OpenSHC::UI::MenuItems::General_Func:: MenuItemRenderFunction_General_RenderCurrentButtonWithPossibleAlphaTexOnScreenMenuSurface)(); } diff --git a/src/OpenSHC/UI/MenuItems/UnusedOldTitleMenu/MenuItemActionHandler_UnusedOldTitleMenu_General.cpp b/src/OpenSHC/UI/MenuItems/Unused/MenuItemActionHandler_UnusedOldTitleMenu_General.cpp similarity index 83% rename from src/OpenSHC/UI/MenuItems/UnusedOldTitleMenu/MenuItemActionHandler_UnusedOldTitleMenu_General.cpp rename to src/OpenSHC/UI/MenuItems/Unused/MenuItemActionHandler_UnusedOldTitleMenu_General.cpp index fcdfc3934..58839a64e 100644 --- a/src/OpenSHC/UI/MenuItems/UnusedOldTitleMenu/MenuItemActionHandler_UnusedOldTitleMenu_General.cpp +++ b/src/OpenSHC/UI/MenuItems/Unused/MenuItemActionHandler_UnusedOldTitleMenu_General.cpp @@ -1,11 +1,11 @@ -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuItems/Unused.func.hpp" #include "OpenSHC/Globals/DAT_WindowAndDirectDraw.hpp" namespace OpenSHC { namespace UI { namespace MenuItems { - namespace UnusedOldTitleMenu { + namespace Unused { // FUNCTION: STRONGHOLDCRUSADER 0x00440420 void MenuItemActionHandler_UnusedOldTitleMenu_General(int param_1, ...) diff --git a/src/OpenSHC/UI/MenuItems/UnusedWinCondition/MenuItemActionHandler_UnusedWinCondition_Options.cpp b/src/OpenSHC/UI/MenuItems/Unused/MenuItemActionHandler_UnusedWinCondition_Options.cpp similarity index 94% rename from src/OpenSHC/UI/MenuItems/UnusedWinCondition/MenuItemActionHandler_UnusedWinCondition_Options.cpp rename to src/OpenSHC/UI/MenuItems/Unused/MenuItemActionHandler_UnusedWinCondition_Options.cpp index fb1b5f4d2..c8a00648a 100644 --- a/src/OpenSHC/UI/MenuItems/UnusedWinCondition/MenuItemActionHandler_UnusedWinCondition_Options.cpp +++ b/src/OpenSHC/UI/MenuItems/Unused/MenuItemActionHandler_UnusedWinCondition_Options.cpp @@ -1,4 +1,4 @@ -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuItems/Unused.func.hpp" #include "OpenSHC/UI/MenuModalComposition.func.hpp" #include "OpenSHC/UI/Enums/MenuModalType.hpp" #include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" @@ -8,7 +8,7 @@ namespace OpenSHC { namespace UI { namespace MenuItems { - namespace UnusedWinCondition { + namespace Unused { using OpenSHC::UI::Enums::MenuModalType; using OpenSHC::WindowsHelper::Enums::BOOLEnum; diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_CreateOrTriggerInvasion.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_CreateOrTriggerInvasion.cpp deleted file mode 100644 index d9adcb6f5..000000000 --- a/src/OpenSHC/UI/MenuModalRenderFunction_CreateOrTriggerInvasion.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "OpenSHC/UI.func.hpp" -#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" - -#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" - -namespace OpenSHC { - -// FUNCTION: STRONGHOLDCRUSADER 0x004AB540 -void UI::MenuModalRenderFunction_CreateOrTriggerInvasion(int x, int y, int width, int height) -{ - - MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)( - 199, 0x2e, x, y, width); -} - -} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataAiInfo.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataAiInfo.cpp deleted file mode 100644 index b28ef209c..000000000 --- a/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataAiInfo.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include "OpenSHC/AI/AICState.func.hpp" -#include "OpenSHC/UI.func.hpp" - -#include "OpenSHC/Globals/DAT_AICState.hpp" - -namespace OpenSHC { - -// FUNCTION: STRONGHOLDCRUSADER 0x004AAA60 -void UI::MenuModalRenderFunction_DebugDataAiInfo(int x, int y, int width, int height) -{ - MACRO_CALL_MEMBER(OpenSHC::AI::AICState_Func::renderDebugDataAiInfo, DAT_AICState::ptr)(x, y, width, height); -} - -} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataCurrentPlayerData.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataCurrentPlayerData.cpp deleted file mode 100644 index 64c214081..000000000 --- a/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataCurrentPlayerData.cpp +++ /dev/null @@ -1,15 +0,0 @@ -#include "OpenSHC/Game/GameStateStructures.func.hpp" -#include "OpenSHC/UI.func.hpp" - -#include "OpenSHC/Globals/DAT_GameState.hpp" - -namespace OpenSHC { - -// FUNCTION: STRONGHOLDCRUSADER 0x004AAA40 -void UI::MenuModalRenderFunction_DebugDataCurrentPlayerData(int x, int y, int width, int height) -{ - MACRO_CALL_MEMBER(OpenSHC::Game::GameStateStructures_Func::renderDebugDataCurrentPlayerData, DAT_GameState::ptr)( - x, y, width, height); -} - -} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataMapData.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataMapData.cpp deleted file mode 100644 index f41fbbc5b..000000000 --- a/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataMapData.cpp +++ /dev/null @@ -1,15 +0,0 @@ -#include "OpenSHC/Map/WildlifeState.func.hpp" -#include "OpenSHC/UI.func.hpp" - -#include "OpenSHC/Globals/DAT_WildlifeState.hpp" - -namespace OpenSHC { - -// FUNCTION: STRONGHOLDCRUSADER 0x004AAB20 -void UI::MenuModalRenderFunction_DebugDataMapData(int x, int y, int width, int height) -{ - MACRO_CALL_MEMBER(OpenSHC::Map::WildlifeState_Func::renderDebugDataMapData, DAT_WildlifeState::ptr)( - x, y, width, height); -} - -} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataMousePointing.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataMousePointing.cpp deleted file mode 100644 index ed9f71800..000000000 --- a/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataMousePointing.cpp +++ /dev/null @@ -1,15 +0,0 @@ -#include "OpenSHC/Rendering/ViewportRenderState.func.hpp" -#include "OpenSHC/UI.func.hpp" - -#include "OpenSHC/Globals/DAT_ViewportRenderState.hpp" - -namespace OpenSHC { - -// FUNCTION: STRONGHOLDCRUSADER 0x004AAAC0 -void UI::MenuModalRenderFunction_DebugDataMousePointing(int x, int y, int width, int height) -{ - MACRO_CALL_MEMBER(OpenSHC::Rendering::ViewportRenderState_Func::renderDebugDataMousePointing, - DAT_ViewportRenderState::ptr)(x, y, width, height); -} - -} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataNetwork.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataNetwork.cpp deleted file mode 100644 index 761b2c2c0..000000000 --- a/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataNetwork.cpp +++ /dev/null @@ -1,15 +0,0 @@ -#include "OpenSHC/Synchrony/GameSynchronyState.func.hpp" -#include "OpenSHC/UI.func.hpp" - -#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" - -namespace OpenSHC { - -// FUNCTION: STRONGHOLDCRUSADER 0x004AAAE0 -void UI::MenuModalRenderFunction_DebugDataNetwork(int x, int y, int width, int height) -{ - MACRO_CALL_MEMBER(OpenSHC::Synchrony::GameSynchronyState_Func::renderDebugDataNetwork, DAT_GameSynchronyState::ptr)( - x, y, width, height); -} - -} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataSplitInfo.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataSplitInfo.cpp deleted file mode 100644 index d38f30843..000000000 --- a/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataSplitInfo.cpp +++ /dev/null @@ -1,15 +0,0 @@ -#include "OpenSHC/Synchrony/GameSynchronyState.func.hpp" -#include "OpenSHC/UI.func.hpp" - -#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" - -namespace OpenSHC { - -// FUNCTION: STRONGHOLDCRUSADER 0x004AAB00 -void UI::MenuModalRenderFunction_DebugDataSplitInfo(int x, int y, int width, int height) -{ - MACRO_CALL_MEMBER(OpenSHC::Synchrony::GameSynchronyState_Func::renderDebugDataSplitInfo, - DAT_GameSynchronyState::ptr)(x, y, width, height); -} - -} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataUnitData.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataUnitData.cpp deleted file mode 100644 index 3fac233d4..000000000 --- a/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataUnitData.cpp +++ /dev/null @@ -1,15 +0,0 @@ -#include "OpenSHC/Map/Units/UnitsState.func.hpp" -#include "OpenSHC/UI.func.hpp" - -#include "OpenSHC/Globals/DAT_UnitsState.hpp" - -namespace OpenSHC { - -// FUNCTION: STRONGHOLDCRUSADER 0x004AAA80 -void UI::MenuModalRenderFunction_DebugDataUnitData(int x, int y, int width, int height) -{ - MACRO_CALL_MEMBER(OpenSHC::Map::Units::UnitsState_Func::renderDebugDataUnitData, DAT_UnitsState::ptr)( - x, y, width, height); -} - -} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataZoneDataUnk.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataZoneDataUnk.cpp deleted file mode 100644 index 5f2f6df59..000000000 --- a/src/OpenSHC/UI/MenuModalRenderFunction_DebugDataZoneDataUnk.cpp +++ /dev/null @@ -1,15 +0,0 @@ -#include "OpenSHC/Map/Units/TroopValueState.func.hpp" -#include "OpenSHC/UI.func.hpp" - -#include "OpenSHC/Globals/DAT_TroopValueState.hpp" - -namespace OpenSHC { - -// FUNCTION: STRONGHOLDCRUSADER 0x004AAAA0 -void UI::MenuModalRenderFunction_DebugDataZoneDataUnk(int x, int y, int width, int height) -{ - MACRO_CALL_MEMBER(OpenSHC::Map::Units::TroopValueState_Func::renderAttackInfoDebugOverlay, - DAT_TroopValueState::ptr)(x, y, width, height); -} - -} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_DisableTroops.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_DisableTroops.cpp deleted file mode 100644 index 94d6652a1..000000000 --- a/src/OpenSHC/UI/MenuModalRenderFunction_DisableTroops.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "OpenSHC/UI.func.hpp" -#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" - -#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" - -namespace OpenSHC { - -// FUNCTION: STRONGHOLDCRUSADER 0x004ABCB0 -void UI::MenuModalRenderFunction_DisableTroops(int x, int y, int width, int height) -{ - - MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)( - 199, 0xbc, x, y, width); -} - -} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_DisableWeapon.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_DisableWeapon.cpp deleted file mode 100644 index bda815a4f..000000000 --- a/src/OpenSHC/UI/MenuModalRenderFunction_DisableWeapon.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "OpenSHC/UI.func.hpp" -#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" - -#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" - -namespace OpenSHC { - -// FUNCTION: STRONGHOLDCRUSADER 0x004ABCE0 -void UI::MenuModalRenderFunction_DisableWeapon(int x, int y, int width, int height) -{ - - MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)( - 199, 0xbd, x, y, width); -} - -} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_DisplayAiLordMessage.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_DisplayAiLordMessage.cpp deleted file mode 100644 index bf1581db0..000000000 --- a/src/OpenSHC/UI/MenuModalRenderFunction_DisplayAiLordMessage.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include "OpenSHC/Rendering/Bink/AIMessageQueue.func.hpp" -#include "OpenSHC/UI.func.hpp" - -#include "OpenSHC/Globals/DAT_VideoBikQueue.hpp" - -namespace OpenSHC { - -// FUNCTION: STRONGHOLDCRUSADER 0x004AB440 -void UI::MenuModalRenderFunction_DisplayAiLordMessage(int x, int y, int width, int height) -{ - MACRO_CALL_MEMBER(OpenSHC::Rendering::Bink::AIMessageQueue_Func::playAiLordMessage, DAT_VideoBikQueue::ptr)(x, y); -} - -} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_EnterTitleOnGameStart.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_EnterTitleOnGameStart.cpp deleted file mode 100644 index 429c30163..000000000 --- a/src/OpenSHC/UI/MenuModalRenderFunction_EnterTitleOnGameStart.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "OpenSHC/UI.func.hpp" -#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" - -#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" - -namespace OpenSHC { - -// FUNCTION: STRONGHOLDCRUSADER 0x00491BF0 -void UI::MenuModalRenderFunction_EnterTitleOnGameStart(int x, int y, int width, int height) -{ - - MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)( - 5, 6, x, y, width); -} - -} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_GameplayOptions.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_GameplayOptions.cpp deleted file mode 100644 index dccda1846..000000000 --- a/src/OpenSHC/UI/MenuModalRenderFunction_GameplayOptions.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "OpenSHC/UI.func.hpp" -#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" - -#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" - -namespace OpenSHC { - -// FUNCTION: STRONGHOLDCRUSADER 0x00491E80 -void UI::MenuModalRenderFunction_GameplayOptions(int x, int y, int width, int height) -{ - - MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)( - 0x4a, 0x19, x, y, width); -} - -} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_NetworkOptions.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_NetworkOptions.cpp deleted file mode 100644 index 6aae9a1c5..000000000 --- a/src/OpenSHC/UI/MenuModalRenderFunction_NetworkOptions.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "OpenSHC/UI.func.hpp" -#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" - -#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" - -namespace OpenSHC { - -// FUNCTION: STRONGHOLDCRUSADER 0x00492A60 -void UI::MenuModalRenderFunction_NetworkOptions(int x, int y, int width, int height) -{ - - MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)( - 0x4a, 6, x, y, width); -} - -} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_OnlineQuitGame.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_OnlineQuitGame.cpp deleted file mode 100644 index 8b53044bf..000000000 --- a/src/OpenSHC/UI/MenuModalRenderFunction_OnlineQuitGame.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "OpenSHC/UI.func.hpp" -#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" - -#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" - -namespace OpenSHC { - -// FUNCTION: STRONGHOLDCRUSADER 0x004937B0 -void UI::MenuModalRenderFunction_OnlineQuitGame(int x, int y, int width, int height) -{ - - MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)( - 0x4a, 7, x, y, width); -} - -} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_OptionsMenu.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_OptionsMenu.cpp deleted file mode 100644 index e27b9532e..000000000 --- a/src/OpenSHC/UI/MenuModalRenderFunction_OptionsMenu.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "OpenSHC/UI.func.hpp" -#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" - -#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" - -namespace OpenSHC { - -// FUNCTION: STRONGHOLDCRUSADER 0x00491810 -void UI::MenuModalRenderFunction_OptionsMenu(int x, int y, int width, int height) -{ - - MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)( - 0x4a, 1, x, y, width); -} - -} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_SkirmishConnectionOptions.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_SkirmishConnectionOptions.cpp deleted file mode 100644 index e9e0e441d..000000000 --- a/src/OpenSHC/UI/MenuModalRenderFunction_SkirmishConnectionOptions.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "OpenSHC/UI.func.hpp" -#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" - -#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" - -namespace OpenSHC { - -// FUNCTION: STRONGHOLDCRUSADER 0x004ABE50 -void UI::MenuModalRenderFunction_SkirmishConnectionOptions(int x, int y, int width, int height) -{ - - MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)( - 0x4f, 0x5d, x, y, width); -} - -} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_SkirmishPlayOptions.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_SkirmishPlayOptions.cpp deleted file mode 100644 index 1fe4e9a9d..000000000 --- a/src/OpenSHC/UI/MenuModalRenderFunction_SkirmishPlayOptions.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "OpenSHC/UI.func.hpp" -#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" - -#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" - -namespace OpenSHC { - -// FUNCTION: STRONGHOLDCRUSADER 0x004ABE80 -void UI::MenuModalRenderFunction_SkirmishPlayOptions(int x, int y, int width, int height) -{ - - MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)( - 0x4f, 0x67, x, y, width); -} - -} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_SoundOptions.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_SoundOptions.cpp deleted file mode 100644 index 4f603e2cd..000000000 --- a/src/OpenSHC/UI/MenuModalRenderFunction_SoundOptions.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "OpenSHC/UI.func.hpp" -#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" - -#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" - -namespace OpenSHC { - -// FUNCTION: STRONGHOLDCRUSADER 0x00492660 -void UI::MenuModalRenderFunction_SoundOptions(int x, int y, int width, int height) -{ - - MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)( - 0x4a, 5, x, y, width); -} - -} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_StartGoods.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_StartGoods.cpp deleted file mode 100644 index 3c5cbe1c4..000000000 --- a/src/OpenSHC/UI/MenuModalRenderFunction_StartGoods.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "OpenSHC/UI.func.hpp" -#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" - -#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" - -namespace OpenSHC { - -// FUNCTION: STRONGHOLDCRUSADER 0x004AB4E0 -void UI::MenuModalRenderFunction_StartGoods(int x, int y, int width, int height) -{ - - MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)( - 199, 0x29, x, y, width); -} - -} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_TextEditor.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_TextEditor.cpp deleted file mode 100644 index ee70d322c..000000000 --- a/src/OpenSHC/UI/MenuModalRenderFunction_TextEditor.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include "OpenSHC/Text/TextEditorState.func.hpp" -#include "OpenSHC/UI.func.hpp" - -#include "OpenSHC/Globals/DAT_TextEditorState.hpp" - -namespace OpenSHC { - -// FUNCTION: STRONGHOLDCRUSADER 0x004AAB40 -void UI::MenuModalRenderFunction_TextEditor(int x, int y, int width, int height) -{ - MACRO_CALL_MEMBER(OpenSHC::Text::TextEditorState_Func::setTextRenderingLogic, DAT_TextEditorState::ptr)(); -} - -} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_TraderSettings.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_TraderSettings.cpp deleted file mode 100644 index dba6d0e7b..000000000 --- a/src/OpenSHC/UI/MenuModalRenderFunction_TraderSettings.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "OpenSHC/UI.func.hpp" -#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" - -#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" - -namespace OpenSHC { - -// FUNCTION: STRONGHOLDCRUSADER 0x004AB4B0 -void UI::MenuModalRenderFunction_TraderSettings(int x, int y, int width, int height) -{ - - MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)( - 199, 0x26, x, y, width); -} - -} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_TriggerEvent.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_TriggerEvent.cpp deleted file mode 100644 index e7a23a23e..000000000 --- a/src/OpenSHC/UI/MenuModalRenderFunction_TriggerEvent.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "OpenSHC/UI.func.hpp" -#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" - -#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" - -namespace OpenSHC { - -// FUNCTION: STRONGHOLDCRUSADER 0x004AC250 -void UI::MenuModalRenderFunction_TriggerEvent(int x, int y, int width, int height) -{ - - MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)( - 199, 0x17, x, y, width); -} - -} diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_TutorialBox_Thunk.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_TutorialBox_Thunk.cpp deleted file mode 100644 index 153d2a1b7..000000000 --- a/src/OpenSHC/UI/MenuModalRenderFunction_TutorialBox_Thunk.cpp +++ /dev/null @@ -1,15 +0,0 @@ - - -#include "OpenSHC/UI.func.hpp" - -namespace OpenSHC { -namespace UI { - - // FUNCTION: STRONGHOLDCRUSADER 0x004abd10 - void MenuModalRenderFunction_TutorialBox_Thunk(int x, int y, int width, int height) - { - MACRO_CALL(UI_Func::MenuModalRenderFunction_TutorialBox)(x, y, width, height); - } - -} // namespace UI -} // namespace OpenSHC diff --git a/src/OpenSHC/UI/MenuModalRenderFunction_UnusedSiegeAttackingForceUnk.cpp b/src/OpenSHC/UI/MenuModalRenderFunction_UnusedSiegeAttackingForceUnk.cpp deleted file mode 100644 index 55722fb27..000000000 --- a/src/OpenSHC/UI/MenuModalRenderFunction_UnusedSiegeAttackingForceUnk.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "OpenSHC/UI.func.hpp" -#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" - -#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" - -namespace OpenSHC { - -// FUNCTION: STRONGHOLDCRUSADER 0x004AB510 -void UI::MenuModalRenderFunction_UnusedSiegeAttackingForceUnk(int x, int y, int width, int height) -{ - - MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)( - 199, 0xa4, x, y, width); -} - -} diff --git a/src/OpenSHC/UI/MenuModals/CreateOrTriggerInvasion/MenuModalRenderFunction_CreateOrTriggerInvasion.cpp b/src/OpenSHC/UI/MenuModals/CreateOrTriggerInvasion/MenuModalRenderFunction_CreateOrTriggerInvasion.cpp new file mode 100644 index 000000000..3d70f5cf9 --- /dev/null +++ b/src/OpenSHC/UI/MenuModals/CreateOrTriggerInvasion/MenuModalRenderFunction_CreateOrTriggerInvasion.cpp @@ -0,0 +1,22 @@ +#include "OpenSHC/UI/MenuModals/CreateOrTriggerInvasion.func.hpp" +#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuModals { + namespace CreateOrTriggerInvasion { + + // FUNCTION: STRONGHOLDCRUSADER 0x004AB540 + void MenuModalRenderFunction_CreateOrTriggerInvasion(int x, int y, int width, int height) + { + + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, + DAT_PencilRenderCore::ptr)(199, 0x2e, x, y, width); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuModals/DebugDataAiInfo/MenuModalRenderFunction_DebugDataAiInfo.cpp b/src/OpenSHC/UI/MenuModals/DebugDataAiInfo/MenuModalRenderFunction_DebugDataAiInfo.cpp new file mode 100644 index 000000000..77286eb06 --- /dev/null +++ b/src/OpenSHC/UI/MenuModals/DebugDataAiInfo/MenuModalRenderFunction_DebugDataAiInfo.cpp @@ -0,0 +1,21 @@ +#include "OpenSHC/AI/AICState.func.hpp" +#include "OpenSHC/UI/MenuModals/DebugDataAiInfo.func.hpp" + +#include "OpenSHC/Globals/DAT_AICState.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuModals { + namespace DebugDataAiInfo { + + // FUNCTION: STRONGHOLDCRUSADER 0x004AAA60 + void MenuModalRenderFunction_DebugDataAiInfo(int x, int y, int width, int height) + { + MACRO_CALL_MEMBER(OpenSHC::AI::AICState_Func::renderDebugDataAiInfo, DAT_AICState::ptr)( + x, y, width, height); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuModals/DebugDataCurrentPlayerData/MenuModalRenderFunction_DebugDataCurrentPlayerData.cpp b/src/OpenSHC/UI/MenuModals/DebugDataCurrentPlayerData/MenuModalRenderFunction_DebugDataCurrentPlayerData.cpp new file mode 100644 index 000000000..52ee043e1 --- /dev/null +++ b/src/OpenSHC/UI/MenuModals/DebugDataCurrentPlayerData/MenuModalRenderFunction_DebugDataCurrentPlayerData.cpp @@ -0,0 +1,21 @@ +#include "OpenSHC/Game/GameStateStructures.func.hpp" +#include "OpenSHC/UI/MenuModals/DebugDataCurrentPlayerData.func.hpp" + +#include "OpenSHC/Globals/DAT_GameState.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuModals { + namespace DebugDataCurrentPlayerData { + + // FUNCTION: STRONGHOLDCRUSADER 0x004AAA40 + void MenuModalRenderFunction_DebugDataCurrentPlayerData(int x, int y, int width, int height) + { + MACRO_CALL_MEMBER(OpenSHC::Game::GameStateStructures_Func::renderDebugDataCurrentPlayerData, + DAT_GameState::ptr)(x, y, width, height); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuModals/DebugDataMapData/MenuModalRenderFunction_DebugDataMapData.cpp b/src/OpenSHC/UI/MenuModals/DebugDataMapData/MenuModalRenderFunction_DebugDataMapData.cpp new file mode 100644 index 000000000..77a303092 --- /dev/null +++ b/src/OpenSHC/UI/MenuModals/DebugDataMapData/MenuModalRenderFunction_DebugDataMapData.cpp @@ -0,0 +1,21 @@ +#include "OpenSHC/Map/WildlifeState.func.hpp" +#include "OpenSHC/UI/MenuModals/DebugDataMapData.func.hpp" + +#include "OpenSHC/Globals/DAT_WildlifeState.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuModals { + namespace DebugDataMapData { + + // FUNCTION: STRONGHOLDCRUSADER 0x004AAB20 + void MenuModalRenderFunction_DebugDataMapData(int x, int y, int width, int height) + { + MACRO_CALL_MEMBER(OpenSHC::Map::WildlifeState_Func::renderDebugDataMapData, DAT_WildlifeState::ptr)( + x, y, width, height); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuModals/DebugDataMousePointing/MenuModalRenderFunction_DebugDataMousePointing.cpp b/src/OpenSHC/UI/MenuModals/DebugDataMousePointing/MenuModalRenderFunction_DebugDataMousePointing.cpp new file mode 100644 index 000000000..1733c3a8d --- /dev/null +++ b/src/OpenSHC/UI/MenuModals/DebugDataMousePointing/MenuModalRenderFunction_DebugDataMousePointing.cpp @@ -0,0 +1,21 @@ +#include "OpenSHC/Rendering/ViewportRenderState.func.hpp" +#include "OpenSHC/UI/MenuModals/DebugDataMousePointing.func.hpp" + +#include "OpenSHC/Globals/DAT_ViewportRenderState.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuModals { + namespace DebugDataMousePointing { + + // FUNCTION: STRONGHOLDCRUSADER 0x004AAAC0 + void MenuModalRenderFunction_DebugDataMousePointing(int x, int y, int width, int height) + { + MACRO_CALL_MEMBER(OpenSHC::Rendering::ViewportRenderState_Func::renderDebugDataMousePointing, + DAT_ViewportRenderState::ptr)(x, y, width, height); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuModals/DebugDataNetwork/MenuModalRenderFunction_DebugDataNetwork.cpp b/src/OpenSHC/UI/MenuModals/DebugDataNetwork/MenuModalRenderFunction_DebugDataNetwork.cpp new file mode 100644 index 000000000..b7d42c0b4 --- /dev/null +++ b/src/OpenSHC/UI/MenuModals/DebugDataNetwork/MenuModalRenderFunction_DebugDataNetwork.cpp @@ -0,0 +1,21 @@ +#include "OpenSHC/Synchrony/GameSynchronyState.func.hpp" +#include "OpenSHC/UI/MenuModals/DebugDataNetwork.func.hpp" + +#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuModals { + namespace DebugDataNetwork { + + // FUNCTION: STRONGHOLDCRUSADER 0x004AAAE0 + void MenuModalRenderFunction_DebugDataNetwork(int x, int y, int width, int height) + { + MACRO_CALL_MEMBER(OpenSHC::Synchrony::GameSynchronyState_Func::renderDebugDataNetwork, + DAT_GameSynchronyState::ptr)(x, y, width, height); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuModals/DebugDataSplitInfo/MenuModalRenderFunction_DebugDataSplitInfo.cpp b/src/OpenSHC/UI/MenuModals/DebugDataSplitInfo/MenuModalRenderFunction_DebugDataSplitInfo.cpp new file mode 100644 index 000000000..eb0b0e732 --- /dev/null +++ b/src/OpenSHC/UI/MenuModals/DebugDataSplitInfo/MenuModalRenderFunction_DebugDataSplitInfo.cpp @@ -0,0 +1,21 @@ +#include "OpenSHC/Synchrony/GameSynchronyState.func.hpp" +#include "OpenSHC/UI/MenuModals/DebugDataSplitInfo.func.hpp" + +#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuModals { + namespace DebugDataSplitInfo { + + // FUNCTION: STRONGHOLDCRUSADER 0x004AAB00 + void MenuModalRenderFunction_DebugDataSplitInfo(int x, int y, int width, int height) + { + MACRO_CALL_MEMBER(OpenSHC::Synchrony::GameSynchronyState_Func::renderDebugDataSplitInfo, + DAT_GameSynchronyState::ptr)(x, y, width, height); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuModals/DebugDataUnitData/MenuModalRenderFunction_DebugDataUnitData.cpp b/src/OpenSHC/UI/MenuModals/DebugDataUnitData/MenuModalRenderFunction_DebugDataUnitData.cpp new file mode 100644 index 000000000..44e80409a --- /dev/null +++ b/src/OpenSHC/UI/MenuModals/DebugDataUnitData/MenuModalRenderFunction_DebugDataUnitData.cpp @@ -0,0 +1,21 @@ +#include "OpenSHC/Map/Units/UnitsState.func.hpp" +#include "OpenSHC/UI/MenuModals/DebugDataUnitData.func.hpp" + +#include "OpenSHC/Globals/DAT_UnitsState.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuModals { + namespace DebugDataUnitData { + + // FUNCTION: STRONGHOLDCRUSADER 0x004AAA80 + void MenuModalRenderFunction_DebugDataUnitData(int x, int y, int width, int height) + { + MACRO_CALL_MEMBER(OpenSHC::Map::Units::UnitsState_Func::renderDebugDataUnitData, DAT_UnitsState::ptr)( + x, y, width, height); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuModals/DebugDataZoneDataUnk/MenuModalRenderFunction_DebugDataZoneDataUnk.cpp b/src/OpenSHC/UI/MenuModals/DebugDataZoneDataUnk/MenuModalRenderFunction_DebugDataZoneDataUnk.cpp new file mode 100644 index 000000000..04792f035 --- /dev/null +++ b/src/OpenSHC/UI/MenuModals/DebugDataZoneDataUnk/MenuModalRenderFunction_DebugDataZoneDataUnk.cpp @@ -0,0 +1,21 @@ +#include "OpenSHC/Map/Units/TroopValueState.func.hpp" +#include "OpenSHC/UI/MenuModals/DebugDataZoneDataUnk.func.hpp" + +#include "OpenSHC/Globals/DAT_TroopValueState.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuModals { + namespace DebugDataZoneDataUnk { + + // FUNCTION: STRONGHOLDCRUSADER 0x004AAAA0 + void MenuModalRenderFunction_DebugDataZoneDataUnk(int x, int y, int width, int height) + { + MACRO_CALL_MEMBER(OpenSHC::Map::Units::TroopValueState_Func::renderAttackInfoDebugOverlay, + DAT_TroopValueState::ptr)(x, y, width, height); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuModals/DisableTroops/MenuModalRenderFunction_DisableTroops.cpp b/src/OpenSHC/UI/MenuModals/DisableTroops/MenuModalRenderFunction_DisableTroops.cpp new file mode 100644 index 000000000..c3baf876b --- /dev/null +++ b/src/OpenSHC/UI/MenuModals/DisableTroops/MenuModalRenderFunction_DisableTroops.cpp @@ -0,0 +1,22 @@ +#include "OpenSHC/UI/MenuModals/DisableTroops.func.hpp" +#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuModals { + namespace DisableTroops { + + // FUNCTION: STRONGHOLDCRUSADER 0x004ABCB0 + void MenuModalRenderFunction_DisableTroops(int x, int y, int width, int height) + { + + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, + DAT_PencilRenderCore::ptr)(199, 0xbc, x, y, width); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuModals/DisableWeapon/MenuModalRenderFunction_DisableWeapon.cpp b/src/OpenSHC/UI/MenuModals/DisableWeapon/MenuModalRenderFunction_DisableWeapon.cpp new file mode 100644 index 000000000..6b06605f2 --- /dev/null +++ b/src/OpenSHC/UI/MenuModals/DisableWeapon/MenuModalRenderFunction_DisableWeapon.cpp @@ -0,0 +1,22 @@ +#include "OpenSHC/UI/MenuModals/DisableWeapon.func.hpp" +#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuModals { + namespace DisableWeapon { + + // FUNCTION: STRONGHOLDCRUSADER 0x004ABCE0 + void MenuModalRenderFunction_DisableWeapon(int x, int y, int width, int height) + { + + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, + DAT_PencilRenderCore::ptr)(199, 0xbd, x, y, width); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuModals/DisplayAiLordMessage/MenuModalRenderFunction_DisplayAiLordMessage.cpp b/src/OpenSHC/UI/MenuModals/DisplayAiLordMessage/MenuModalRenderFunction_DisplayAiLordMessage.cpp new file mode 100644 index 000000000..5ab65710c --- /dev/null +++ b/src/OpenSHC/UI/MenuModals/DisplayAiLordMessage/MenuModalRenderFunction_DisplayAiLordMessage.cpp @@ -0,0 +1,21 @@ +#include "OpenSHC/Rendering/Bink/AIMessageQueue.func.hpp" +#include "OpenSHC/UI/MenuModals/DisplayAiLordMessage.func.hpp" + +#include "OpenSHC/Globals/DAT_VideoBikQueue.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuModals { + namespace DisplayAiLordMessage { + + // FUNCTION: STRONGHOLDCRUSADER 0x004AB440 + void MenuModalRenderFunction_DisplayAiLordMessage(int x, int y, int width, int height) + { + MACRO_CALL_MEMBER( + OpenSHC::Rendering::Bink::AIMessageQueue_Func::playAiLordMessage, DAT_VideoBikQueue::ptr)(x, y); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuModals/EnterTitleOnGameStart/MenuModalRenderFunction_EnterTitleOnGameStart.cpp b/src/OpenSHC/UI/MenuModals/EnterTitleOnGameStart/MenuModalRenderFunction_EnterTitleOnGameStart.cpp new file mode 100644 index 000000000..2b97c8861 --- /dev/null +++ b/src/OpenSHC/UI/MenuModals/EnterTitleOnGameStart/MenuModalRenderFunction_EnterTitleOnGameStart.cpp @@ -0,0 +1,22 @@ +#include "OpenSHC/UI/MenuModals/EnterTitleOnGameStart.func.hpp" +#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuModals { + namespace EnterTitleOnGameStart { + + // FUNCTION: STRONGHOLDCRUSADER 0x00491BF0 + void MenuModalRenderFunction_EnterTitleOnGameStart(int x, int y, int width, int height) + { + + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, + DAT_PencilRenderCore::ptr)(5, 6, x, y, width); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuModals/GameplayOptions/MenuModalRenderFunction_GameplayOptions.cpp b/src/OpenSHC/UI/MenuModals/GameplayOptions/MenuModalRenderFunction_GameplayOptions.cpp new file mode 100644 index 000000000..7f1a24733 --- /dev/null +++ b/src/OpenSHC/UI/MenuModals/GameplayOptions/MenuModalRenderFunction_GameplayOptions.cpp @@ -0,0 +1,22 @@ +#include "OpenSHC/UI/MenuModals/GameplayOptions.func.hpp" +#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuModals { + namespace GameplayOptions { + + // FUNCTION: STRONGHOLDCRUSADER 0x00491E80 + void MenuModalRenderFunction_GameplayOptions(int x, int y, int width, int height) + { + + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, + DAT_PencilRenderCore::ptr)(0x4a, 0x19, x, y, width); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuModals/NetworkOptions/MenuModalRenderFunction_NetworkOptions.cpp b/src/OpenSHC/UI/MenuModals/NetworkOptions/MenuModalRenderFunction_NetworkOptions.cpp new file mode 100644 index 000000000..edbffc398 --- /dev/null +++ b/src/OpenSHC/UI/MenuModals/NetworkOptions/MenuModalRenderFunction_NetworkOptions.cpp @@ -0,0 +1,22 @@ +#include "OpenSHC/UI/MenuModals/NetworkOptions.func.hpp" +#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuModals { + namespace NetworkOptions { + + // FUNCTION: STRONGHOLDCRUSADER 0x00492A60 + void MenuModalRenderFunction_NetworkOptions(int x, int y, int width, int height) + { + + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, + DAT_PencilRenderCore::ptr)(0x4a, 6, x, y, width); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuModals/OnlineQuitGame/MenuModalRenderFunction_OnlineQuitGame.cpp b/src/OpenSHC/UI/MenuModals/OnlineQuitGame/MenuModalRenderFunction_OnlineQuitGame.cpp new file mode 100644 index 000000000..baac41d78 --- /dev/null +++ b/src/OpenSHC/UI/MenuModals/OnlineQuitGame/MenuModalRenderFunction_OnlineQuitGame.cpp @@ -0,0 +1,22 @@ +#include "OpenSHC/UI/MenuModals/OnlineQuitGame.func.hpp" +#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuModals { + namespace OnlineQuitGame { + + // FUNCTION: STRONGHOLDCRUSADER 0x004937B0 + void MenuModalRenderFunction_OnlineQuitGame(int x, int y, int width, int height) + { + + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, + DAT_PencilRenderCore::ptr)(0x4a, 7, x, y, width); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuModals/OptionsMenu/MenuModalRenderFunction_OptionsMenu.cpp b/src/OpenSHC/UI/MenuModals/OptionsMenu/MenuModalRenderFunction_OptionsMenu.cpp new file mode 100644 index 000000000..ee8ad7fb2 --- /dev/null +++ b/src/OpenSHC/UI/MenuModals/OptionsMenu/MenuModalRenderFunction_OptionsMenu.cpp @@ -0,0 +1,22 @@ +#include "OpenSHC/UI/MenuModals/OptionsMenu.func.hpp" +#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuModals { + namespace OptionsMenu { + + // FUNCTION: STRONGHOLDCRUSADER 0x00491810 + void MenuModalRenderFunction_OptionsMenu(int x, int y, int width, int height) + { + + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, + DAT_PencilRenderCore::ptr)(0x4a, 1, x, y, width); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuModals/SkirmishConnectionOptions/MenuModalRenderFunction_SkirmishConnectionOptions.cpp b/src/OpenSHC/UI/MenuModals/SkirmishConnectionOptions/MenuModalRenderFunction_SkirmishConnectionOptions.cpp new file mode 100644 index 000000000..42cef27a6 --- /dev/null +++ b/src/OpenSHC/UI/MenuModals/SkirmishConnectionOptions/MenuModalRenderFunction_SkirmishConnectionOptions.cpp @@ -0,0 +1,22 @@ +#include "OpenSHC/UI/MenuModals/SkirmishConnectionOptions.func.hpp" +#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuModals { + namespace SkirmishConnectionOptions { + + // FUNCTION: STRONGHOLDCRUSADER 0x004ABE50 + void MenuModalRenderFunction_SkirmishConnectionOptions(int x, int y, int width, int height) + { + + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, + DAT_PencilRenderCore::ptr)(0x4f, 0x5d, x, y, width); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuModals/SkirmishPlayOptions/MenuModalRenderFunction_SkirmishPlayOptions.cpp b/src/OpenSHC/UI/MenuModals/SkirmishPlayOptions/MenuModalRenderFunction_SkirmishPlayOptions.cpp new file mode 100644 index 000000000..b652b395c --- /dev/null +++ b/src/OpenSHC/UI/MenuModals/SkirmishPlayOptions/MenuModalRenderFunction_SkirmishPlayOptions.cpp @@ -0,0 +1,22 @@ +#include "OpenSHC/UI/MenuModals/SkirmishPlayOptions.func.hpp" +#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuModals { + namespace SkirmishPlayOptions { + + // FUNCTION: STRONGHOLDCRUSADER 0x004ABE80 + void MenuModalRenderFunction_SkirmishPlayOptions(int x, int y, int width, int height) + { + + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, + DAT_PencilRenderCore::ptr)(0x4f, 0x67, x, y, width); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuModals/SoundOptions/MenuModalRenderFunction_SoundOptions.cpp b/src/OpenSHC/UI/MenuModals/SoundOptions/MenuModalRenderFunction_SoundOptions.cpp new file mode 100644 index 000000000..95718b0f5 --- /dev/null +++ b/src/OpenSHC/UI/MenuModals/SoundOptions/MenuModalRenderFunction_SoundOptions.cpp @@ -0,0 +1,22 @@ +#include "OpenSHC/UI/MenuModals/SoundOptions.func.hpp" +#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuModals { + namespace SoundOptions { + + // FUNCTION: STRONGHOLDCRUSADER 0x00492660 + void MenuModalRenderFunction_SoundOptions(int x, int y, int width, int height) + { + + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, + DAT_PencilRenderCore::ptr)(0x4a, 5, x, y, width); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuModals/StartGoods/MenuModalRenderFunction_StartGoods.cpp b/src/OpenSHC/UI/MenuModals/StartGoods/MenuModalRenderFunction_StartGoods.cpp new file mode 100644 index 000000000..25030b297 --- /dev/null +++ b/src/OpenSHC/UI/MenuModals/StartGoods/MenuModalRenderFunction_StartGoods.cpp @@ -0,0 +1,22 @@ +#include "OpenSHC/UI/MenuModals/StartGoods.func.hpp" +#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuModals { + namespace StartGoods { + + // FUNCTION: STRONGHOLDCRUSADER 0x004AB4E0 + void MenuModalRenderFunction_StartGoods(int x, int y, int width, int height) + { + + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, + DAT_PencilRenderCore::ptr)(199, 0x29, x, y, width); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuModals/TextEditor/MenuModalRenderFunction_TextEditor.cpp b/src/OpenSHC/UI/MenuModals/TextEditor/MenuModalRenderFunction_TextEditor.cpp new file mode 100644 index 000000000..d78272730 --- /dev/null +++ b/src/OpenSHC/UI/MenuModals/TextEditor/MenuModalRenderFunction_TextEditor.cpp @@ -0,0 +1,21 @@ +#include "OpenSHC/Text/TextEditorState.func.hpp" +#include "OpenSHC/UI/MenuModals/TextEditor.func.hpp" + +#include "OpenSHC/Globals/DAT_TextEditorState.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuModals { + namespace TextEditor { + + // FUNCTION: STRONGHOLDCRUSADER 0x004AAB40 + void MenuModalRenderFunction_TextEditor(int x, int y, int width, int height) + { + MACRO_CALL_MEMBER( + OpenSHC::Text::TextEditorState_Func::setTextRenderingLogic, DAT_TextEditorState::ptr)(); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuModals/TraderSettings/MenuModalRenderFunction_TraderSettings.cpp b/src/OpenSHC/UI/MenuModals/TraderSettings/MenuModalRenderFunction_TraderSettings.cpp new file mode 100644 index 000000000..d600d9d2a --- /dev/null +++ b/src/OpenSHC/UI/MenuModals/TraderSettings/MenuModalRenderFunction_TraderSettings.cpp @@ -0,0 +1,22 @@ +#include "OpenSHC/UI/MenuModals/TraderSettings.func.hpp" +#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuModals { + namespace TraderSettings { + + // FUNCTION: STRONGHOLDCRUSADER 0x004AB4B0 + void MenuModalRenderFunction_TraderSettings(int x, int y, int width, int height) + { + + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, + DAT_PencilRenderCore::ptr)(199, 0x26, x, y, width); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuModals/TriggerEvent/MenuModalRenderFunction_TriggerEvent.cpp b/src/OpenSHC/UI/MenuModals/TriggerEvent/MenuModalRenderFunction_TriggerEvent.cpp new file mode 100644 index 000000000..c1d9db6bb --- /dev/null +++ b/src/OpenSHC/UI/MenuModals/TriggerEvent/MenuModalRenderFunction_TriggerEvent.cpp @@ -0,0 +1,22 @@ +#include "OpenSHC/UI/MenuModals/TriggerEvent.func.hpp" +#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuModals { + namespace TriggerEvent { + + // FUNCTION: STRONGHOLDCRUSADER 0x004AC250 + void MenuModalRenderFunction_TriggerEvent(int x, int y, int width, int height) + { + + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, + DAT_PencilRenderCore::ptr)(199, 0x17, x, y, width); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuModals/TutorialBox/MenuModalRenderFunction_TutorialBox_Thunk.cpp b/src/OpenSHC/UI/MenuModals/TutorialBox/MenuModalRenderFunction_TutorialBox_Thunk.cpp new file mode 100644 index 000000000..abb96cfb2 --- /dev/null +++ b/src/OpenSHC/UI/MenuModals/TutorialBox/MenuModalRenderFunction_TutorialBox_Thunk.cpp @@ -0,0 +1,18 @@ +#include "OpenSHC/UI/MenuModals/TutorialBox.func.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuModals { + namespace TutorialBox { + + // FUNCTION: STRONGHOLDCRUSADER 0x004abd10 + void MenuModalRenderFunction_TutorialBox_Thunk(int x, int y, int width, int height) + { + MACRO_CALL(OpenSHC::UI::MenuModals::TutorialBox_Func::MenuModalRenderFunction_TutorialBox)( + x, y, width, height); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuModals/UnusedSiegeAttackingForceUnk/MenuModalRenderFunction_UnusedSiegeAttackingForceUnk.cpp b/src/OpenSHC/UI/MenuModals/UnusedSiegeAttackingForceUnk/MenuModalRenderFunction_UnusedSiegeAttackingForceUnk.cpp new file mode 100644 index 000000000..99dede229 --- /dev/null +++ b/src/OpenSHC/UI/MenuModals/UnusedSiegeAttackingForceUnk/MenuModalRenderFunction_UnusedSiegeAttackingForceUnk.cpp @@ -0,0 +1,22 @@ +#include "OpenSHC/UI/MenuModals/UnusedSiegeAttackingForceUnk.func.hpp" +#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" + +#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" + +namespace OpenSHC { +namespace UI { + namespace MenuModals { + namespace UnusedSiegeAttackingForceUnk { + + // FUNCTION: STRONGHOLDCRUSADER 0x004AB510 + void MenuModalRenderFunction_UnusedSiegeAttackingForceUnk(int x, int y, int width, int height) + { + + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, + DAT_PencilRenderCore::ptr)(199, 0xa4, x, y, width); + } + + } + } +} +} diff --git a/src/OpenSHC/UI/MenuViews/CampaignUnk/MenuView_CampaignUnk_DoEveryFrame.cpp b/src/OpenSHC/UI/MenuViews/CampaignUnk/MenuView_CampaignUnk_DoEveryFrame.cpp index 939f8aea4..07b8f9b07 100644 --- a/src/OpenSHC/UI/MenuViews/CampaignUnk/MenuView_CampaignUnk_DoEveryFrame.cpp +++ b/src/OpenSHC/UI/MenuViews/CampaignUnk/MenuView_CampaignUnk_DoEveryFrame.cpp @@ -1,5 +1,6 @@ #include "OpenSHC/Game/GameCore.func.hpp" -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Helpers.func.hpp" +#include "OpenSHC/UI/MenuViews/CampaignUnk.func.hpp" #include "OpenSHC/UI/Enums/MenuViewType.hpp" #include "OpenSHC/Globals/DAT_GameCore.hpp" @@ -16,7 +17,7 @@ namespace UI { { int iVar1; - iVar1 = MACRO_CALL(OpenSHC::UI_Func::TicksSinceCounterStart)(); + iVar1 = MACRO_CALL(OpenSHC::UI::Helpers_Func::TicksSinceCounterStart)(); if (iVar1 != 0) { if (DAT_GameCore::instance.missionNumber1to20 == 1) { MACRO_CALL_MEMBER(OpenSHC::Game::GameCore_Func::switchToMenuView, DAT_GameCore::ptr)( diff --git a/src/OpenSHC/UI/MenuViews/CrusadeMissionIntro/MenuView_CrusadeMissionIntro_Prepare.cpp b/src/OpenSHC/UI/MenuViews/CrusadeMissionIntro/MenuView_CrusadeMissionIntro_Prepare.cpp index 763594aaf..5ac5670ff 100644 --- a/src/OpenSHC/UI/MenuViews/CrusadeMissionIntro/MenuView_CrusadeMissionIntro_Prepare.cpp +++ b/src/OpenSHC/UI/MenuViews/CrusadeMissionIntro/MenuView_CrusadeMissionIntro_Prepare.cpp @@ -1,4 +1,5 @@ -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Helpers.func.hpp" +#include "OpenSHC/UI/MenuViews/CrusadeMissionIntro.func.hpp" #include "OpenSHC/UI/Rendering/TextureRenderCore.func.hpp" #include "OpenSHC/Globals/DAT_MissionDefinedData.hpp" @@ -16,7 +17,7 @@ namespace UI { DAT_TextureRenderCoreObject::instance.totalLoadedGfx = 0; MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::TextureRenderCore_Func::loadGfxFile, DAT_TextureRenderCoreObject::ptr)("skirmish_background.tgx"); - MACRO_CALL(OpenSHC::UI_Func::LoadTGX_shc_back)(); + MACRO_CALL(OpenSHC::UI::Helpers_Func::LoadTGX_shc_back)(); INT_00eb9ae8::instance = 0; DAT_MissionDefinedData::instance.field26_0xaf8 = true; } diff --git a/src/OpenSHC/UI/MenuViews/EditScenario/MenuView_EditScenario_Prepare.cpp b/src/OpenSHC/UI/MenuViews/EditScenario/MenuView_EditScenario_Prepare.cpp index 0ae7c97ac..2f84dd1f3 100644 --- a/src/OpenSHC/UI/MenuViews/EditScenario/MenuView_EditScenario_Prepare.cpp +++ b/src/OpenSHC/UI/MenuViews/EditScenario/MenuView_EditScenario_Prepare.cpp @@ -1,5 +1,5 @@ #include "OpenSHC/Map/MapPropertiesState.func.hpp" -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuViews/EditScenario.func.hpp" #include "OpenSHC/UI/Rendering/TextureRenderCore.func.hpp" #include "OpenSHC/Globals/DAT_CopyOfScenarioGold.hpp" diff --git a/src/OpenSHC/UI/MenuViews/General/MenuView_General_DoEveryFrame_FirstGfxCentered.cpp b/src/OpenSHC/UI/MenuViews/General/MenuView_General_DoEveryFrame_FirstGfxCentered.cpp index 919540d6d..3f4be52d0 100644 --- a/src/OpenSHC/UI/MenuViews/General/MenuView_General_DoEveryFrame_FirstGfxCentered.cpp +++ b/src/OpenSHC/UI/MenuViews/General/MenuView_General_DoEveryFrame_FirstGfxCentered.cpp @@ -1,4 +1,4 @@ -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuViews/General.func.hpp" #include "OpenSHC/UI/Rendering/TextureRenderCore.func.hpp" #include "OpenSHC/Globals/DAT_TextureRenderCoreObject.hpp" diff --git a/src/OpenSHC/UI/MenuViews/General/MenuView_General_DoInitial_OnlySetMenuXY.cpp b/src/OpenSHC/UI/MenuViews/General/MenuView_General_DoInitial_OnlySetMenuXY.cpp index 3e50c5b34..6a008d036 100644 --- a/src/OpenSHC/UI/MenuViews/General/MenuView_General_DoInitial_OnlySetMenuXY.cpp +++ b/src/OpenSHC/UI/MenuViews/General/MenuView_General_DoInitial_OnlySetMenuXY.cpp @@ -1,4 +1,4 @@ -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuViews/General.func.hpp" #include "OpenSHC/UI/Menu.hpp" #include "OpenSHC/Globals/DAT_MenuHandlerState.hpp" diff --git a/src/OpenSHC/UI/MenuViews/General/MenuView_General_Prepare_SwordShieldAndBorder.cpp b/src/OpenSHC/UI/MenuViews/General/MenuView_General_Prepare_SwordShieldAndBorder.cpp index 9f0aff892..548deb820 100644 --- a/src/OpenSHC/UI/MenuViews/General/MenuView_General_Prepare_SwordShieldAndBorder.cpp +++ b/src/OpenSHC/UI/MenuViews/General/MenuView_General_Prepare_SwordShieldAndBorder.cpp @@ -1,4 +1,5 @@ -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Helpers.func.hpp" +#include "OpenSHC/UI/MenuViews/General.func.hpp" #include "OpenSHC/UI/Rendering/TextureRenderCore.func.hpp" #include "OpenSHC/string-literals.hpp" @@ -17,7 +18,7 @@ namespace UI { DAT_TextureRenderCoreObject::instance.totalLoadedGfx = 0; MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::TextureRenderCore_Func::loadGfxFile, DAT_TextureRenderCoreObject::ptr)(s_frontend_combat3_tgx_005a2134); - MACRO_CALL(OpenSHC::UI_Func::LoadTGX_shc_back)(); + MACRO_CALL(OpenSHC::UI::Helpers_Func::LoadTGX_shc_back)(); } } diff --git a/src/OpenSHC/UI/MenuViews/IntroLogos/MenuView_IntroLogos_DoInitial.cpp b/src/OpenSHC/UI/MenuViews/IntroLogos/MenuView_IntroLogos_DoInitial.cpp index 3414459bd..53a65393e 100644 --- a/src/OpenSHC/UI/MenuViews/IntroLogos/MenuView_IntroLogos_DoInitial.cpp +++ b/src/OpenSHC/UI/MenuViews/IntroLogos/MenuView_IntroLogos_DoInitial.cpp @@ -1,4 +1,4 @@ -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuViews/IntroLogos.func.hpp" #include "OpenSHC/UI/Menu.hpp" #include "OpenSHC/Globals/DAT_IntroTimestamp.hpp" diff --git a/src/OpenSHC/UI/MenuViews/MapEditorLandscaping/MenuView_MapEditorLandscaping_Prepare.cpp b/src/OpenSHC/UI/MenuViews/MapEditorLandscaping/MenuView_MapEditorLandscaping_Prepare.cpp index d60b389a4..b2d428247 100644 --- a/src/OpenSHC/UI/MenuViews/MapEditorLandscaping/MenuView_MapEditorLandscaping_Prepare.cpp +++ b/src/OpenSHC/UI/MenuViews/MapEditorLandscaping/MenuView_MapEditorLandscaping_Prepare.cpp @@ -1,5 +1,6 @@ -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/DisplayElements.func.hpp" #include "OpenSHC/UI/Helpers.func.hpp" +#include "OpenSHC/UI/MenuViews/MapEditorLandscaping.func.hpp" #include "OpenSHC/UI/Enums/DisplayElementID.hpp" #include "OpenSHC/Globals/DAT_WindowAndDirectDraw.hpp" @@ -15,9 +16,9 @@ namespace UI { void MenuView_MapEditorLandscaping_Prepare() { DAT_WindowAndDirectDraw::instance.field37_0xdc = 1; - MACRO_CALL(OpenSHC::UI::Helpers_Func::CheckDisplayElementByIDAndSetForUnlimitedDisplay)( + MACRO_CALL(OpenSHC::UI::DisplayElements_Func::CheckDisplayElementByIDAndSetForUnlimitedDisplay)( OpenSHC::UI::Enums::DEID_PEOPLE_LEFT_TO_PLACE, 0); - MACRO_CALL(OpenSHC::UI::Helpers_Func::CheckDisplayElementByIDAndSetForUnlimitedDisplay)( + MACRO_CALL(OpenSHC::UI::DisplayElements_Func::CheckDisplayElementByIDAndSetForUnlimitedDisplay)( OpenSHC::UI::Enums::DEID_PLAYER_INFO_ON_HOVER, 1); } diff --git a/src/OpenSHC/UI/MenuViews/NewMapMapsize/MenuView_NewMapMapsize_Prepare.cpp b/src/OpenSHC/UI/MenuViews/NewMapMapsize/MenuView_NewMapMapsize_Prepare.cpp index 230e24cce..6d419d6f1 100644 --- a/src/OpenSHC/UI/MenuViews/NewMapMapsize/MenuView_NewMapMapsize_Prepare.cpp +++ b/src/OpenSHC/UI/MenuViews/NewMapMapsize/MenuView_NewMapMapsize_Prepare.cpp @@ -1,4 +1,5 @@ -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Helpers.func.hpp" +#include "OpenSHC/UI/MenuViews/NewMapMapsize.func.hpp" #include "OpenSHC/UI/Rendering/TextureRenderCore.func.hpp" #include "OpenSHC/string-literals.hpp" @@ -15,7 +16,7 @@ namespace UI { DAT_TextureRenderCoreObject::instance.totalLoadedGfx = 0; MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::TextureRenderCore_Func::loadGfxFile, DAT_TextureRenderCoreObject::ptr)(s_frontend_builder2_tgx_005a206c); - MACRO_CALL(OpenSHC::UI_Func::LoadTGX_shc_back)(); + MACRO_CALL(OpenSHC::UI::Helpers_Func::LoadTGX_shc_back)(); } } diff --git a/src/OpenSHC/UI/MenuViews/NewMapMaptype/MenuView_NewMapMaptype_Prepare.cpp b/src/OpenSHC/UI/MenuViews/NewMapMaptype/MenuView_NewMapMaptype_Prepare.cpp index 01241c8e2..10aa8b07c 100644 --- a/src/OpenSHC/UI/MenuViews/NewMapMaptype/MenuView_NewMapMaptype_Prepare.cpp +++ b/src/OpenSHC/UI/MenuViews/NewMapMaptype/MenuView_NewMapMaptype_Prepare.cpp @@ -1,4 +1,5 @@ -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Helpers.func.hpp" +#include "OpenSHC/UI/MenuViews/NewMapMaptype.func.hpp" #include "OpenSHC/UI/Rendering/TextureRenderCore.func.hpp" #include "OpenSHC/string-literals.hpp" @@ -16,7 +17,7 @@ namespace UI { DAT_TextureRenderCoreObject::instance.totalLoadedGfx = 0; MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::TextureRenderCore_Func::loadGfxFile, DAT_TextureRenderCoreObject::ptr)(s_frontend_builder_tgx_005a2084); - MACRO_CALL(OpenSHC::UI_Func::LoadTGX_shc_back)(); + MACRO_CALL(OpenSHC::UI::Helpers_Func::LoadTGX_shc_back)(); DAT_GameCore::instance.mapU3EndInt = 0; } diff --git a/src/OpenSHC/UI/MenuViews/RankingGames/MenuView_RankingGames_Prepare.cpp b/src/OpenSHC/UI/MenuViews/RankingGames/MenuView_RankingGames_Prepare.cpp index 886f4e189..4342302a3 100644 --- a/src/OpenSHC/UI/MenuViews/RankingGames/MenuView_RankingGames_Prepare.cpp +++ b/src/OpenSHC/UI/MenuViews/RankingGames/MenuView_RankingGames_Prepare.cpp @@ -1,5 +1,6 @@ #include "OpenSHC/Game/Skirmish.func.hpp" -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Helpers.func.hpp" +#include "OpenSHC/UI/MenuViews/RankingGames.func.hpp" #include "OpenSHC/UI/Rendering/TextureRenderCore.func.hpp" #include "OpenSHC/Globals/DAT_00ed27a0.hpp" @@ -20,7 +21,7 @@ namespace UI { DAT_TextureRenderCoreObject::instance.totalLoadedGfx = 0; MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::TextureRenderCore_Func::loadGfxFile, DAT_TextureRenderCoreObject::ptr)("frontend_combat3.tgx"); - MACRO_CALL(OpenSHC::UI_Func::LoadTGX_shc_back)(); + MACRO_CALL(OpenSHC::UI::Helpers_Func::LoadTGX_shc_back)(); DAT_StoredGameMode::instance = DAT_GameSynchronyState::instance.currentGameMode; } diff --git a/src/OpenSHC/UI/MenuViews/Unknown26/MenuView_Unknown26_CampaignRelatedUnk_Prepare.cpp b/src/OpenSHC/UI/MenuViews/Unknown26/MenuView_Unknown26_CampaignRelatedUnk_Prepare.cpp index 3bd0dfe39..4153f1a5d 100644 --- a/src/OpenSHC/UI/MenuViews/Unknown26/MenuView_Unknown26_CampaignRelatedUnk_Prepare.cpp +++ b/src/OpenSHC/UI/MenuViews/Unknown26/MenuView_Unknown26_CampaignRelatedUnk_Prepare.cpp @@ -1,5 +1,7 @@ #include "OpenSHC/Rendering.func.hpp" -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Credits.func.hpp" +#include "OpenSHC/UI/Helpers.func.hpp" +#include "OpenSHC/UI/MenuViews/Unknown26.func.hpp" #include "OpenSHC/Globals/DAT_GameCore.hpp" @@ -11,8 +13,8 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x004DCC70 void MenuView_Unknown26_CampaignRelatedUnk_Prepare() { - MACRO_CALL(OpenSHC::UI_Func::ResetCredits)(); - MACRO_CALL(OpenSHC::UI_Func::BuildIntroLogoSequence)( + MACRO_CALL(OpenSHC::UI::Credits_Func::ResetCredits)(); + MACRO_CALL(OpenSHC::UI::Helpers_Func::BuildIntroLogoSequence)( DAT_GameCore::instance.missionNumber1to20, (undefined4)((int)(DAT_GameCore::instance.section1066))); MACRO_CALL(OpenSHC::Rendering_Func::TicksStartCounter)(); } diff --git a/src/OpenSHC/UI/MenuViews/UnusedChooseAvailableKeeps/MenuView_UnusedChooseAvailableKeeps_Prepare.cpp b/src/OpenSHC/UI/MenuViews/UnusedChooseAvailableKeeps/MenuView_UnusedChooseAvailableKeeps_Prepare.cpp index 4c891ad5e..05fa1412b 100644 --- a/src/OpenSHC/UI/MenuViews/UnusedChooseAvailableKeeps/MenuView_UnusedChooseAvailableKeeps_Prepare.cpp +++ b/src/OpenSHC/UI/MenuViews/UnusedChooseAvailableKeeps/MenuView_UnusedChooseAvailableKeeps_Prepare.cpp @@ -1,4 +1,4 @@ -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuViews/UnusedChooseAvailableKeeps.func.hpp" #include "OpenSHC/Globals/DAT_GameCore.hpp" diff --git a/src/OpenSHC/UI/MenuViews/UnusedDemoBuyItScreen/MenuView_UnusedDemoBuyItScreen_DoEveryFrame.cpp b/src/OpenSHC/UI/MenuViews/UnusedDemoBuyItScreen/MenuView_UnusedDemoBuyItScreen_DoEveryFrame.cpp index 05cccc4d9..2abadd778 100644 --- a/src/OpenSHC/UI/MenuViews/UnusedDemoBuyItScreen/MenuView_UnusedDemoBuyItScreen_DoEveryFrame.cpp +++ b/src/OpenSHC/UI/MenuViews/UnusedDemoBuyItScreen/MenuView_UnusedDemoBuyItScreen_DoEveryFrame.cpp @@ -1,4 +1,4 @@ -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuViews/UnusedDemoBuyItScreen.func.hpp" #include "OpenSHC/UI/Rendering/TextureRenderCore.func.hpp" #include "OpenSHC/Globals/DAT_TextureRenderCoreObject.hpp" diff --git a/src/OpenSHC/UI/MenuViews/UnusedExtremeAd/MenuView_UnusedExtremeAd_Prepare.cpp b/src/OpenSHC/UI/MenuViews/UnusedExtremeAd/MenuView_UnusedExtremeAd_Prepare.cpp index 1f3fe3e57..5a41dbdfd 100644 --- a/src/OpenSHC/UI/MenuViews/UnusedExtremeAd/MenuView_UnusedExtremeAd_Prepare.cpp +++ b/src/OpenSHC/UI/MenuViews/UnusedExtremeAd/MenuView_UnusedExtremeAd_Prepare.cpp @@ -1,6 +1,8 @@ #include "OpenSHC/Rendering.func.hpp" -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Credits.func.hpp" +#include "OpenSHC/UI/Helpers.func.hpp" #include "OpenSHC/UI/MenuModalComposition.func.hpp" +#include "OpenSHC/UI/MenuViews/UnusedExtremeAd.func.hpp" #include "OpenSHC/UI/Enums/MenuModalType.hpp" #include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" @@ -18,10 +20,10 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x004E1A20 void MenuView_UnusedExtremeAd_Prepare() { - MACRO_CALL(OpenSHC::UI_Func::ResetCredits)(); + MACRO_CALL(OpenSHC::UI::Credits_Func::ResetCredits)(); MACRO_CALL_MEMBER(OpenSHC::UI::MenuModalComposition_Func::activateModalDialog, DAT_MenuModalComposition3::ptr)(OpenSHC::UI::Enums::MMT_NONE, FALSE); - MACRO_CALL(OpenSHC::UI_Func::BuildExtremeDemoIntroScript)(); + MACRO_CALL(OpenSHC::UI::Helpers_Func::BuildExtremeDemoIntroScript)(); MACRO_CALL(OpenSHC::Rendering_Func::TicksStartCounter)(); DAT_00ed278c::instance = 0; } diff --git a/src/OpenSHC/UI/MenuViews/UnusedHelpTextEditor/MenuView_UnusedHelpTextEditor_DoEveryFrame.cpp b/src/OpenSHC/UI/MenuViews/UnusedHelpTextEditor/MenuView_UnusedHelpTextEditor_DoEveryFrame.cpp index a640d2258..37397279f 100644 --- a/src/OpenSHC/UI/MenuViews/UnusedHelpTextEditor/MenuView_UnusedHelpTextEditor_DoEveryFrame.cpp +++ b/src/OpenSHC/UI/MenuViews/UnusedHelpTextEditor/MenuView_UnusedHelpTextEditor_DoEveryFrame.cpp @@ -1,5 +1,5 @@ #include "OpenSHC/Text/TextEditorState.func.hpp" -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuViews/UnusedHelpTextEditor.func.hpp" #include "OpenSHC/Globals/DAT_TextEditorState.hpp" diff --git a/src/OpenSHC/UI/MenuViews/UnusedHelpTextEditor/MenuView_UnusedHelpTextEditor_Prepare.cpp b/src/OpenSHC/UI/MenuViews/UnusedHelpTextEditor/MenuView_UnusedHelpTextEditor_Prepare.cpp index 9acf8c811..96986c7e2 100644 --- a/src/OpenSHC/UI/MenuViews/UnusedHelpTextEditor/MenuView_UnusedHelpTextEditor_Prepare.cpp +++ b/src/OpenSHC/UI/MenuViews/UnusedHelpTextEditor/MenuView_UnusedHelpTextEditor_Prepare.cpp @@ -1,5 +1,5 @@ #include "OpenSHC/Text/TextEditorState.func.hpp" -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/MenuViews/UnusedHelpTextEditor.func.hpp" #include "OpenSHC/UI/Menu.hpp" #include "OpenSHC/Globals/DAT_MenuHandlerState.hpp" diff --git a/src/OpenSHC/UI/MenuViews/UnusedSomeMissionStartUnk/MenuView_UnusedSomeMissionStartUnk_Prepare.cpp b/src/OpenSHC/UI/MenuViews/UnusedSomeMissionStartUnk/MenuView_UnusedSomeMissionStartUnk_Prepare.cpp index a72554a75..02691cade 100644 --- a/src/OpenSHC/UI/MenuViews/UnusedSomeMissionStartUnk/MenuView_UnusedSomeMissionStartUnk_Prepare.cpp +++ b/src/OpenSHC/UI/MenuViews/UnusedSomeMissionStartUnk/MenuView_UnusedSomeMissionStartUnk_Prepare.cpp @@ -1,4 +1,5 @@ -#include "OpenSHC/UI.func.hpp" +#include "OpenSHC/UI/Helpers.func.hpp" +#include "OpenSHC/UI/MenuViews/UnusedSomeMissionStartUnk.func.hpp" #include "OpenSHC/UI/Rendering/TextureRenderCore.func.hpp" #include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" #include "OpenSHC/string-literals.hpp" @@ -22,7 +23,7 @@ namespace UI { DAT_TextureRenderCoreObject::ptr)(s_multi_background_tgx_005a211c); MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::TextureRenderCore_Func::loadGfxFile, DAT_TextureRenderCoreObject::ptr)(s_gm_fly_tgx_005a2110); - MACRO_CALL(OpenSHC::UI_Func::LoadTGX_shc_back)(); + MACRO_CALL(OpenSHC::UI::Helpers_Func::LoadTGX_shc_back)(); } } diff --git a/src/OpenSHC/UI/PlayAMessageFromAI.cpp b/src/OpenSHC/UI/PlayAMessageFromAI.cpp deleted file mode 100644 index 80de20123..000000000 --- a/src/OpenSHC/UI/PlayAMessageFromAI.cpp +++ /dev/null @@ -1,26 +0,0 @@ -#include "OpenSHC/Audio/SFX/SFXState.func.hpp" -#include "OpenSHC/UI.func.hpp" - -#include "OpenSHC/Globals/DAT_MissionAestheticsDefinedData.hpp" -#include "OpenSHC/Globals/DAT_SFXState.hpp" - -namespace OpenSHC { - -/* - Plays a WAV sound effect from the mission aesthetics data table. param_1 is the column index - (0-16) and param_2 is the row index (1-33). Bounds-checks both params and calls - SFXState::playWAVSFX with the resolved filename pointer. - - renamed by: Claude Sonnet 4.6 - */ - -// FUNCTION: STRONGHOLDCRUSADER 0x004B7F60 -void UI::PlayAMessageFromAI(uint param_1, int param_2) -{ - if ((param_1 < 0x11) && (param_2 - 1U < 0x21)) { - MACRO_CALL_MEMBER(OpenSHC::Audio::SFX::SFXState_Func::playWAVSFX, DAT_SFXState::ptr)( - (char const*)DAT_MissionAestheticsDefinedData::instance.field92_0x170[param_2 * 0x11 + param_1 + -0xc]); - } -} - -} diff --git a/src/OpenSHC/UI/Rendering/RenderBuildingMenu_RecruitingBuilding.cpp b/src/OpenSHC/UI/Rendering/RenderBuildingMenu_RecruitingBuilding.cpp deleted file mode 100644 index dbf86c5a2..000000000 --- a/src/OpenSHC/UI/Rendering/RenderBuildingMenu_RecruitingBuilding.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "OpenSHC/Map/Buildings/BuildingsState.func.hpp" -#include "OpenSHC/UI/Rendering.func.hpp" - -#include "OpenSHC/Globals/DAT_BuildingsState.hpp" - -namespace OpenSHC { -namespace UI { - - // FUNCTION: STRONGHOLDCRUSADER 0x0043A8D0 - void Rendering::RenderBuildingMenu_RecruitingBuilding() - { - MACRO_CALL_MEMBER(OpenSHC::Map::Buildings::BuildingsState_Func::createEntityForAssemblyPointsForActiveTabType, - DAT_BuildingsState::ptr)(); - } - -} -} diff --git a/src/OpenSHC/UI/Rendering/RenderInGameChatDisplayElement.cpp b/src/OpenSHC/UI/Rendering/RenderInGameChatDisplayElement.cpp deleted file mode 100644 index d2aa7267e..000000000 --- a/src/OpenSHC/UI/Rendering/RenderInGameChatDisplayElement.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "OpenSHC/Synchrony/GameSynchronyState.func.hpp" -#include "OpenSHC/UI/Rendering.func.hpp" - -#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" - -namespace OpenSHC { -namespace UI { - - // FUNCTION: STRONGHOLDCRUSADER 0x004AF800 - void Rendering::RenderInGameChatDisplayElement(int posX, int posY, DWORD elementState) - { - MACRO_CALL_MEMBER(OpenSHC::Synchrony::GameSynchronyState_Func::renderInGameChat, DAT_GameSynchronyState::ptr)( - posX, posY, elementState); - } - -} -} diff --git a/src/OpenSHC/UI/Rendering/RenderNoRushDisplayElementUnk.cpp b/src/OpenSHC/UI/Rendering/RenderNoRushDisplayElementUnk.cpp deleted file mode 100644 index a19661d4c..000000000 --- a/src/OpenSHC/UI/Rendering/RenderNoRushDisplayElementUnk.cpp +++ /dev/null @@ -1,141 +0,0 @@ -#include "OpenSHC/Audio/SFX/SFXState.func.hpp" -#include "OpenSHC/Text/TextManager.func.hpp" -#include "OpenSHC/UI/Helpers.func.hpp" -#include "OpenSHC/UI/Rendering.func.hpp" -#include "OpenSHC/UI/Rendering/PencilRenderCore.func.hpp" -#include "OpenSHC/DE/SHCDE/eTextSections.hpp" -#include "OpenSHC/Rendering/Enums/RenderTarget.hpp" -#include "OpenSHC/Rendering/ScreenResolutionEnum.hpp" -#include "OpenSHC/Text/TextAlignment.hpp" -#include "OpenSHC/UI/Enums/DisplayElementID.hpp" -#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" - -#include "OpenSHC/Globals/COL_BLACK.hpp" -#include "OpenSHC/Globals/COL_DARK_LIME.hpp" -#include "OpenSHC/Globals/DAT_GameState.hpp" -#include "OpenSHC/Globals/DAT_PencilRenderCore.hpp" -#include "OpenSHC/Globals/DAT_SFXState.hpp" -#include "OpenSHC/Globals/DAT_TextManagerObject.hpp" -#include "OpenSHC/Globals/DAT_WindowAndDirectDraw.hpp" - -namespace OpenSHC { -namespace UI { - - using OpenSHC::DE::SHCDE::eTextSections; - using OpenSHC::Rendering::ScreenResolutionEnum; - using OpenSHC::Rendering::Enums::RenderTarget; - using OpenSHC::Text::TextAlignment; - using OpenSHC::UI::Enums::DisplayElementID; - using OpenSHC::WindowsHelper::Enums::BOOLEnum; - - // FUNCTION: STRONGHOLDCRUSADER 0x004B20B0 - void Rendering::RenderNoRushDisplayElementUnk(int posX, int posY, DWORD elementState) - { - char* pcVar1; - int left; - int iVar2; - int iVar3; - int xParam; - int yParam; - TextAlignment alignment; - uint foregroundColor; - uint backgroundColor; - int fontSize; - BOOLEnum keepOffsetX; - int iVar4; - int blendStrength; - - if (DAT_GameState::instance.mapAndTime.skirmishNoRushTicks == 0) { - /* - Plays pa paam pa pa pa paam - */ - - MACRO_CALL_MEMBER(OpenSHC::Audio::SFX::SFXState_Func::playWAVSFX, DAT_SFXState::ptr)("battlehorn.wav"); - MACRO_CALL(OpenSHC::UI::Helpers_Func::CheckDisplayElementByIDAndSetForUnlimitedDisplay)( - OpenSHC::UI::Enums::DEID_NO_RUSH, 0); - return; - } - iVar4 = 0x12; - pcVar1 = MACRO_CALL_MEMBER(OpenSHC::Text::TextManager_Func::getTextStringInGroupAtOffset, - DAT_TextManagerObject::ptr)(OpenSHC::DE::SHCDE::TEXT_SKIRMISH_MISC, 7); - iVar4 = MACRO_CALL_MEMBER(OpenSHC::Text::TextManager_Func::computeTextWidth, DAT_TextManagerObject::ptr)( - pcVar1, iVar4); - iVar2 = posX + 800; - DAT_PencilRenderCore::instance.surfaceTarget = OpenSHC::Rendering::Enums::RT_MAP_GAME; - if (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1024x768) { - iVar2 = posX + 0x390; - goto LAB_004b21ab; - } - if (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1280x1024) { - LAB_004b212c: - iVar2 = posX + 0x230; - } else { - if (DAT_WindowAndDirectDraw::instance.currentGameResolution != OpenSHC::Rendering::SRE_1600x1200) { - if (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1280x720) - goto LAB_004b212c; - if (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1440x900) { - iVar2 = posX + 0x1e0; - goto LAB_004b21ab; - } - if ((DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1920x1080) - || (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1920x1200)) { - iVar2 = posX + 0xf0; - goto LAB_004b21ab; - } - if ((DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_2560x1440) - || (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_2560x1600)) { - iVar2 = posX + -0x50; - goto LAB_004b21ab; - } - if (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1366x768) { - iVar2 = posX + 0x205; - goto LAB_004b21ab; - } - if (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1680x1050) { - iVar2 = posX + 0x168; - goto LAB_004b21ab; - } - if (DAT_WindowAndDirectDraw::instance.currentGameResolution != OpenSHC::Rendering::SRE_1600x900) { - if (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1024x600) { - iVar2 = posX + 0x2b0; - } else if (DAT_WindowAndDirectDraw::instance.currentGameResolution - == OpenSHC::Rendering::SRE_1360x768) { - iVar2 = posX + 0x208; - } - goto LAB_004b21ab; - } - } - iVar2 = posX + 400; - } - LAB_004b21ab: - iVar3 = (iVar4 + 0x32) / 2; - iVar2 = iVar2 + (-0x12 - iVar3); - left = iVar2 - iVar3; - MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawBlendedBlackBox, - DAT_PencilRenderCore::ptr)(left + -7, posY + -5, iVar3 + 5 + iVar2, posY + 0x1e, 0x10); - blendStrength = 0; - keepOffsetX = FALSE; - fontSize = 0x12; - backgroundColor = 0; - foregroundColor = 0xc2f0eb; - alignment = OpenSHC::Text::TTA_CENTER; - xParam = iVar2; - yParam = posY; - pcVar1 = MACRO_CALL_MEMBER(OpenSHC::Text::TextManager_Func::getTextStringInGroupAtOffset, - DAT_TextManagerObject::ptr)(OpenSHC::DE::SHCDE::TEXT_SKIRMISH_MISC, 7); - MACRO_CALL_MEMBER(OpenSHC::Text::TextManager_Func::renderInGameTextWithShadow, DAT_TextManagerObject::ptr)( - pcVar1, xParam, yParam, alignment, foregroundColor, backgroundColor, fontSize, keepOffsetX, blendStrength); - MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawBorderBox, DAT_PencilRenderCore::ptr)( - left + -1, posY + 0x12, iVar3 + 1 + iVar2, posY + 0x18, (ushort)((int)(COL_BLACK::instance.shortValue))); - MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawColorBox, DAT_PencilRenderCore::ptr)(left, - posY + 0x13, - ((DAT_GameState::instance.mapAndTime.skirmishNoRushTicks * (iVar4 + 0x32)) - / DAT_GameState::instance.mapAndTime.skirmishNoRushTicksLeft - - iVar3) - + iVar2, - posY + 0x17, (ushort)((int)(COL_DARK_LIME::instance.shortValue))); - DAT_PencilRenderCore::instance.surfaceTarget = OpenSHC::Rendering::Enums::RT_SCREEN_MENU; - } - -} -} diff --git a/src/OpenSHC/UI/Rendering/RenderNoTreeGrowthTextDisplayElement.cpp b/src/OpenSHC/UI/Rendering/RenderNoTreeGrowthTextDisplayElement.cpp deleted file mode 100644 index 541dafd0d..000000000 --- a/src/OpenSHC/UI/Rendering/RenderNoTreeGrowthTextDisplayElement.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#include "OpenSHC/Text/TextManager.func.hpp" -#include "OpenSHC/UI/Rendering.func.hpp" -#include "OpenSHC/Text/TextAlignment.hpp" -#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" -#include "OpenSHC/string-literals.hpp" - -#include "OpenSHC/Globals/DAT_TextManagerObject.hpp" - -namespace OpenSHC { -namespace UI { - - using OpenSHC::Text::TextAlignment; - using OpenSHC::WindowsHelper::Enums::BOOLEnum; - - // FUNCTION: STRONGHOLDCRUSADER 0x004AFB00 - void Rendering::RenderNoTreeGrowthTextDisplayElement(int posX, int posY, DWORD elementState) - { - MACRO_CALL_MEMBER(OpenSHC::Text::TextManager_Func::renderInGameTextWithShadow, DAT_TextManagerObject::ptr)( - s_No_tree_growth_005a779c, posX, posY, OpenSHC::Text::TTA_LEFT, 0x80ff, 0, 0x11, FALSE, 0); - } - -} -} diff --git a/src/OpenSHC/UI/Rendering/RenderResourceMissing1DisplayElement.cpp b/src/OpenSHC/UI/Rendering/RenderResourceMissing1DisplayElement.cpp deleted file mode 100644 index 22cb9bc02..000000000 --- a/src/OpenSHC/UI/Rendering/RenderResourceMissing1DisplayElement.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "OpenSHC/Audio/MissingResourceState.func.hpp" -#include "OpenSHC/UI/Rendering.func.hpp" - -#include "OpenSHC/Globals/DAT_MissingResourceState.hpp" - -namespace OpenSHC { -namespace UI { - - // FUNCTION: STRONGHOLDCRUSADER 0x004AF820 - void Rendering::RenderResourceMissing1DisplayElement(int posX, int posY, DWORD elementState) - { - MACRO_CALL_MEMBER(OpenSHC::Audio::MissingResourceState_Func::renderResourceMissingText, - DAT_MissingResourceState::ptr)(posX, posY, elementState, 1); - } - -} -} diff --git a/src/OpenSHC/UI/Rendering/RenderResourceMissing2DisplayElement.cpp b/src/OpenSHC/UI/Rendering/RenderResourceMissing2DisplayElement.cpp deleted file mode 100644 index 22dc85abc..000000000 --- a/src/OpenSHC/UI/Rendering/RenderResourceMissing2DisplayElement.cpp +++ /dev/null @@ -1,17 +0,0 @@ -#include "OpenSHC/Audio/MissingResourceState.func.hpp" -#include "OpenSHC/UI/Rendering.func.hpp" - -#include "OpenSHC/Globals/DAT_MissingResourceState.hpp" - -namespace OpenSHC { -namespace UI { - - // FUNCTION: STRONGHOLDCRUSADER 0x004AF840 - void Rendering::RenderResourceMissing2DisplayElement(int posX, int posY, DWORD elementState) - { - MACRO_CALL_MEMBER(OpenSHC::Audio::MissingResourceState_Func::renderResourceMissingText, - DAT_MissingResourceState::ptr)(posX, posY, elementState, 2); - } - -} -} diff --git a/src/OpenSHC/UI/Rendering/RenderUnknownDisplayElement7.cpp b/src/OpenSHC/UI/Rendering/RenderUnknownDisplayElement7.cpp deleted file mode 100644 index 46a413ef4..000000000 --- a/src/OpenSHC/UI/Rendering/RenderUnknownDisplayElement7.cpp +++ /dev/null @@ -1,24 +0,0 @@ -#include "OpenSHC/Text/TextManager.func.hpp" -#include "OpenSHC/UI/Rendering.func.hpp" -#include "OpenSHC/Text/TextAlignment.hpp" -#include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" - -#include "OpenSHC/Globals/DAT_TextManagerObject.hpp" -#include "OpenSHC/Globals/DAT_UnknownStopwatch.hpp" - -namespace OpenSHC { -namespace UI { - - using OpenSHC::Text::TextAlignment; - using OpenSHC::WindowsHelper::Enums::BOOLEnum; - - // FUNCTION: STRONGHOLDCRUSADER 0x004AFA50 - void Rendering::RenderUnknownDisplayElement7(int posX, int posY, DWORD elementState) - { - MACRO_CALL_MEMBER(OpenSHC::Text::TextManager_Func::renderNumber2, DAT_TextManagerObject::ptr)( - DAT_UnknownStopwatch::instance.duration_0x0, posX, posY + 5, OpenSHC::Text::TTA_RIGHT, 0x80ff, 0, 0xf, - FALSE, 0); - } - -} -} diff --git a/src/OpenSHC/UI/Rendering/TextureRenderCore/transformTgxCompressedImageToRGB565.cpp b/src/OpenSHC/UI/Rendering/TextureRenderCore/transformTgxCompressedImageToRGB565.cpp index 3000196a4..b9e047b4c 100644 --- a/src/OpenSHC/UI/Rendering/TextureRenderCore/transformTgxCompressedImageToRGB565.cpp +++ b/src/OpenSHC/UI/Rendering/TextureRenderCore/transformTgxCompressedImageToRGB565.cpp @@ -1,6 +1,7 @@ - #include "../TextureRenderCore.func.hpp" +#include "OpenSHC/UI/Rendering/TextureRenderCore.func.hpp" + #include "OpenSHC/Globals/DAT_GMImageOffsets.hpp" #include "OpenSHC/Globals/DAT_GMImageSizes.hpp" #include "OpenSHC/Globals/DAT_TextureRenderCoreObject.hpp" @@ -12,7 +13,7 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x00455270 void TextureRenderCore::transformTgxCompressedImageToRGB565(int imageIndex) { - MACRO_CALL_MEMBER(TextureRenderCore_Func::transformTgxFromRGB555ToRGB565, this)( + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::TextureRenderCore_Func::transformTgxFromRGB555ToRGB565, this)( (ushort*)(&(((byte*)this->gmProcessedImageData)[DAT_GMImageOffsets::instance[imageIndex]])), DAT_GMImageSizes::instance[imageIndex]); } diff --git a/src/OpenSHC/UI/Rendering/TextureRenderCore/transformUncompressedImageToRGB565.cpp b/src/OpenSHC/UI/Rendering/TextureRenderCore/transformUncompressedImageToRGB565.cpp index a2d6f218f..f7fe44e60 100644 --- a/src/OpenSHC/UI/Rendering/TextureRenderCore/transformUncompressedImageToRGB565.cpp +++ b/src/OpenSHC/UI/Rendering/TextureRenderCore/transformUncompressedImageToRGB565.cpp @@ -1,6 +1,7 @@ - #include "../TextureRenderCore.func.hpp" +#include "OpenSHC/UI/Rendering/TextureRenderCore.func.hpp" + #include "OpenSHC/Globals/DAT_GMImageOffsets.hpp" #include "OpenSHC/Globals/DAT_GMImageSizes.hpp" @@ -11,7 +12,7 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x004552e0 void TextureRenderCore::transformUncompressedImageToRGB565(int imageIndex) { - MACRO_CALL_MEMBER(TextureRenderCore_Func::transformRawToRGB555To565, this)( + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::TextureRenderCore_Func::transformRawToRGB555To565, this)( DAT_GMImageOffsets::instance[imageIndex], DAT_GMImageSizes::instance[imageIndex]); } diff --git a/src/OpenSHC/UI/Rendering/TextureRenderCore/transformUncompressedImageWithMarkerUnkToRGB565.cpp b/src/OpenSHC/UI/Rendering/TextureRenderCore/transformUncompressedImageWithMarkerUnkToRGB565.cpp index d50600fa0..9b6aa6b71 100644 --- a/src/OpenSHC/UI/Rendering/TextureRenderCore/transformUncompressedImageWithMarkerUnkToRGB565.cpp +++ b/src/OpenSHC/UI/Rendering/TextureRenderCore/transformUncompressedImageWithMarkerUnkToRGB565.cpp @@ -1,5 +1,7 @@ #include "../TextureRenderCore.func.hpp" +#include "OpenSHC/UI/Rendering/TextureRenderCore.func.hpp" + #include "OpenSHC/Globals/DAT_GMImageOffsets.hpp" #include "OpenSHC/Globals/DAT_GMImageSizes.hpp" @@ -10,8 +12,8 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x00455250 void TextureRenderCore::transformUncompressedImageWithMarkerUnkToRGB565(int imageIndex) { - MACRO_CALL_MEMBER(TextureRenderCore_Func::transformRawWithMarkerUnkToRGB555To565, this)( - DAT_GMImageOffsets::instance[imageIndex], DAT_GMImageSizes::instance[imageIndex]); + MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::TextureRenderCore_Func::transformRawWithMarkerUnkToRGB555To565, + this)(DAT_GMImageOffsets::instance[imageIndex], DAT_GMImageSizes::instance[imageIndex]); } } diff --git a/src/OpenSHC/UI/Rendering/TogglePlayerPingDisplayElementUnk.cpp b/src/OpenSHC/UI/Rendering/TogglePlayerPingDisplayElementUnk.cpp deleted file mode 100644 index 0d27d5b91..000000000 --- a/src/OpenSHC/UI/Rendering/TogglePlayerPingDisplayElementUnk.cpp +++ /dev/null @@ -1,23 +0,0 @@ -#include "OpenSHC/UI.func.hpp" -#include "OpenSHC/UI/Rendering.func.hpp" -#include "OpenSHC/UI/DisplayElement.hpp" -#include "OpenSHC/UI/Enums/DisplayElementID.hpp" - -namespace OpenSHC { -namespace UI { - - using OpenSHC::UI::DisplayElement; - using OpenSHC::UI::Enums::DisplayElementID; - - // FUNCTION: STRONGHOLDCRUSADER 0x004AF6B0 - void Rendering::TogglePlayerPingDisplayElementUnk(DisplayElementID displayElementID, uint toggleValue) - { - DisplayElement* _displayElement = MACRO_CALL(OpenSHC::UI_Func::FindDisplayElementWithID)(displayElementID); - if (_displayElement != NULL) { - _displayElement->displayDuration_0x14 = -1; - _displayElement->elementStateUnk_0xc = _displayElement->elementStateUnk_0xc != 0 ? 0 : toggleValue; - } - } - -} -} diff --git a/src/OpenSHC/UI/RestoreScenarioGold.cpp b/src/OpenSHC/UI/RestoreScenarioGold.cpp deleted file mode 100644 index f1b24f8f8..000000000 --- a/src/OpenSHC/UI/RestoreScenarioGold.cpp +++ /dev/null @@ -1,14 +0,0 @@ -#include "OpenSHC/UI.func.hpp" - -#include "OpenSHC/Globals/DAT_CopyOfScenarioGold.hpp" -#include "OpenSHC/Globals/DAT_GameState.hpp" - -namespace OpenSHC { - -// FUNCTION: STRONGHOLDCRUSADER 0x004B8210 -void UI::RestoreScenarioGold() -{ - DAT_GameState::instance.mapAndTime.scenarioGold = (short)DAT_CopyOfScenarioGold::instance; -} - -} diff --git a/src/OpenSHC/UI/SetActiveCreditsSequenceIndex.cpp b/src/OpenSHC/UI/SetActiveCreditsSequenceIndex.cpp deleted file mode 100644 index fcee92dc6..000000000 --- a/src/OpenSHC/UI/SetActiveCreditsSequenceIndex.cpp +++ /dev/null @@ -1,15 +0,0 @@ -#include "OpenSHC/UI.func.hpp" - -#include "OpenSHC/Globals/DAT_00ed3120.hpp" -#include "OpenSHC/Globals/DAT_00ed3124.hpp" - -namespace OpenSHC { - -// FUNCTION: STRONGHOLDCRUSADER 0x004D9270 -void __cdecl UI::SetActiveCreditsSequenceIndex(undefined4 param_1) -{ - DAT_00ed3124::instance = param_1; - DAT_00ed3120::instance = 0; -} - -} diff --git a/src/OpenSHC/UI/SetTutorialHintActiveWithTimestamp.cpp b/src/OpenSHC/UI/SetTutorialHintActiveWithTimestamp.cpp deleted file mode 100644 index 3e3052294..000000000 --- a/src/OpenSHC/UI/SetTutorialHintActiveWithTimestamp.cpp +++ /dev/null @@ -1,15 +0,0 @@ -#include "OpenSHC/UI.func.hpp" - -#include "OpenSHC/Globals/DAT_00df5564.hpp" -#include "OpenSHC/Globals/DWORD_00df5568.hpp" - -namespace OpenSHC { - -// FUNCTION: STRONGHOLDCRUSADER 0x004BC770 -void UI::SetTutorialHintActiveWithTimestamp() -{ - DAT_00df5564::instance = 1; - DWORD_00df5568::instance = timeGetTime(); -} - -} diff --git a/src/OpenSHC/UI/ShowProgressBarSaveLoadDialog.cpp b/src/OpenSHC/UI/ShowProgressBarSaveLoadDialog.cpp deleted file mode 100644 index 87a3a5f49..000000000 --- a/src/OpenSHC/UI/ShowProgressBarSaveLoadDialog.cpp +++ /dev/null @@ -1,22 +0,0 @@ -#include "OpenSHC/UI.func.hpp" -#include "OpenSHC/UI/MenuModalComposition.func.hpp" -#include "OpenSHC/UI/Enums/MenuModalType.hpp" - -#include "OpenSHC/Globals/DAT_MenuModalComposition1.hpp" -#include "OpenSHC/Globals/DAT_MenuTextInputState.hpp" - -namespace OpenSHC { - -using OpenSHC::UI::Enums::MenuModalType; - -// FUNCTION: STRONGHOLDCRUSADER 0x00495800 -void UI::ShowProgressBarSaveLoadDialog(int param_1) -{ - DAT_MenuTextInputState::instance.DAT_MenuOptionsActionParameter = (param_1 != 0 ? 0xe : 0) + 0x20; - MACRO_CALL_MEMBER(OpenSHC::UI::MenuModalComposition_Func::activateModalDialog2, DAT_MenuModalComposition1::ptr)( - OpenSHC::UI::Enums::MMT_PROGRESS_BAR_BOX); - DAT_MenuModalComposition1::instance.activeModalDialogID = Enums::MMT_PROGRESS_BAR_BOX; - MACRO_CALL(OpenSHC::UI_Func::MenuItemActionHandler_ProgressBarBox_LoadAndSaveGameButtonLogic)(0); -} - -} diff --git a/src/OpenSHC/UI/TacticalPowersFill.cpp b/src/OpenSHC/UI/TacticalPowersFill.cpp deleted file mode 100644 index 1497b2892..000000000 --- a/src/OpenSHC/UI/TacticalPowersFill.cpp +++ /dev/null @@ -1,18 +0,0 @@ -#include "OpenSHC/UI.func.hpp" - -#include "OpenSHC/Globals/DAT_MissionDefinedData.hpp" -#include "OpenSHC/Globals/DAT_TacticalPowersHelpTextDisplayBool.hpp" - -namespace OpenSHC { - -// FUNCTION: STRONGHOLDCRUSADER 0x004D9D90 -void UI::TacticalPowersFill() -{ - if ((DAT_TacticalPowersHelpTextDisplayBool::instance != '\0') - && (DAT_MissionDefinedData::instance.field39_0x1370 = DAT_MissionDefinedData::instance.field39_0x1370 + -1, - DAT_MissionDefinedData::instance.field39_0x1370 == 0)) { - DAT_TacticalPowersHelpTextDisplayBool::instance = '\0'; - } -} - -} From 86b09af8140bf43dbaa01c57b69770f8e7feddee Mon Sep 17 00:00:00 2001 From: Gynt Date: Thu, 24 Sep 2026 16:55:21 +0200 Subject: [PATCH 003/241] reimplement: SHC_3BB0A8C1_0x00471A80 100.00% Reimplemented --- .../exitToScenarioDescriptionMenu.cpp | 6 +- status/addresses-SHC-3BB0A8C1.txt | 236 +++++++++--------- 2 files changed, 122 insertions(+), 120 deletions(-) diff --git a/src/OpenSHC/Game/GameCore/exitToScenarioDescriptionMenu.cpp b/src/OpenSHC/Game/GameCore/exitToScenarioDescriptionMenu.cpp index 6d905a653..1c25e9d1d 100644 --- a/src/OpenSHC/Game/GameCore/exitToScenarioDescriptionMenu.cpp +++ b/src/OpenSHC/Game/GameCore/exitToScenarioDescriptionMenu.cpp @@ -1,6 +1,8 @@ #include "OpenSHC/Game/GameCore.func.hpp" #include "OpenSHC/UI/Enums/MenuViewType.hpp" +#include "OpenSHC/Globals/DAT_GameCore.hpp" + namespace OpenSHC { namespace Game { @@ -10,8 +12,8 @@ namespace Game { void GameCore::exitToScenarioDescriptionMenu() { MACRO_CALL_MEMBER(OpenSHC::Game::GameCore_Func::removeLadyAndJester, this)(); - this->field22_0x64 = 0; - MACRO_CALL_MEMBER(OpenSHC::Game::GameCore_Func::switchToMenuView, this)( + DAT_GameCore::instance.field22_0x64 = 0; + MACRO_CALL_MEMBER(OpenSHC::Game::GameCore_Func::switchToMenuView, DAT_GameCore::ptr)( OpenSHC::UI::Enums::MVT_SCENARIO_DESCRIPTION, 0); } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index b80b8635f..c5130b6f2 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -383,7 +383,7 @@ SHC_3BB0A8C1_0x00400288 | 0.0% | Pending SHC_3BB0A8C1_0x00401000 | 0.0% | Pending -SHC_3BB0A8C1_0x00401040 | 0.0% | Pending +SHC_3BB0A8C1_0x00401040 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00401060 | 0.0% | Pending @@ -531,7 +531,7 @@ SHC_3BB0A8C1_0x004036F0 | 0.0% | Pending SHC_3BB0A8C1_0x00403790 | 0.0% | Pending -SHC_3BB0A8C1_0x004038A0 | 0.0% | Pending +SHC_3BB0A8C1_0x004038A0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004038B0 | 0.0% | Pending @@ -2575,7 +2575,7 @@ SHC_3BB0A8C1_0x00408E30 | 0.0% | Pending SHC_3BB0A8C1_0x00408E70 | 0.0% | Pending -SHC_3BB0A8C1_0x00408EB0 | 0.0% | Pending +SHC_3BB0A8C1_0x00408EB0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00408ED0 | 0.0% | Pending @@ -2599,7 +2599,7 @@ SHC_3BB0A8C1_0x004092B0 | 0.0% | Pending SHC_3BB0A8C1_0x004092C0 | 0.0% | Pending -SHC_3BB0A8C1_0x004092E0 | 0.0% | Pending +SHC_3BB0A8C1_0x004092E0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00409300 | 0.0% | Pending @@ -4331,7 +4331,7 @@ SHC_3BB0A8C1_0x0040BF40 | 0.0% | Pending SHC_3BB0A8C1_0x0040BFA0 | 0.0% | Pending -SHC_3BB0A8C1_0x0040BFD0 | 0.0% | Pending +SHC_3BB0A8C1_0x0040BFD0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0040BFE0 | 0.0% | Pending @@ -5029,13 +5029,13 @@ SHC_3BB0A8C1_0x0040F240 | 0.0% | Pending SHC_3BB0A8C1_0x0040F360 | 0.0% | Pending -SHC_3BB0A8C1_0x0040F3D0 | 0.0% | Pending +SHC_3BB0A8C1_0x0040F3D0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0040F3F0 | 0.0% | Pending -SHC_3BB0A8C1_0x0040F420 | 0.0% | Pending +SHC_3BB0A8C1_0x0040F420 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0040F440 | 0.0% | Pending +SHC_3BB0A8C1_0x0040F440 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0040F460 | 0.0% | Pending @@ -5543,7 +5543,7 @@ SHC_3BB0A8C1_0x00417B90 | 0.0% | Pending SHC_3BB0A8C1_0x00417FD0 | 0.0% | Pending -SHC_3BB0A8C1_0x004180E0 | 0.0% | Pending +SHC_3BB0A8C1_0x004180E0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00418100 | 0.0% | Pending @@ -5575,7 +5575,7 @@ SHC_3BB0A8C1_0x00418C80 | 0.0% | Pending SHC_3BB0A8C1_0x00418EC0 | 0.0% | Pending -SHC_3BB0A8C1_0x00418F70 | 0.0% | Pending +SHC_3BB0A8C1_0x00418F70 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00418F90 | 0.0% | Pending @@ -6657,7 +6657,7 @@ SHC_3BB0A8C1_0x00424680 | 0.0% | Pending SHC_3BB0A8C1_0x004246B0 | 0.0% | Pending -SHC_3BB0A8C1_0x004246E0 | 0.0% | Pending +SHC_3BB0A8C1_0x004246E0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00424700 | 100.0% | Reimplemented @@ -6675,7 +6675,7 @@ SHC_3BB0A8C1_0x00424AD0 | 0.0% | Pending SHC_3BB0A8C1_0x00424B10 | 0.0% | Pending -SHC_3BB0A8C1_0x00424BD0 | 0.0% | Pending +SHC_3BB0A8C1_0x00424BD0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00424BE0 | 0.0% | Pending @@ -6891,7 +6891,7 @@ SHC_3BB0A8C1_0x00428A60 | 0.0% | Pending SHC_3BB0A8C1_0x00428AC0 | 0.0% | Pending -SHC_3BB0A8C1_0x00429630 | 0.0% | Pending +SHC_3BB0A8C1_0x00429630 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00429650 | 0.0% | Pending @@ -6973,7 +6973,7 @@ SHC_3BB0A8C1_0x0042AC34 | 0.0% | Pending SHC_3BB0A8C1_0x0042AC38 | 0.0% | Pending -SHC_3BB0A8C1_0x0042AC40 | 0.0% | Pending +SHC_3BB0A8C1_0x0042AC40 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0042AC60 | 0.0% | Pending @@ -11137,7 +11137,7 @@ SHC_3BB0A8C1_0x00434228 | 0.0% | Pending SHC_3BB0A8C1_0x00434230 | 0.0% | Pending -SHC_3BB0A8C1_0x00434260 | 0.0% | Pending +SHC_3BB0A8C1_0x00434260 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00434270 | 0.0% | Pending @@ -13393,15 +13393,15 @@ SHC_3BB0A8C1_0x00439890 | 0.0% | Pending SHC_3BB0A8C1_0x004398B0 | 0.0% | Pending -SHC_3BB0A8C1_0x0043A850 | 0.0% | Pending +SHC_3BB0A8C1_0x0043A850 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0043A860 | 0.0% | Pending +SHC_3BB0A8C1_0x0043A860 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0043A880 | 0.0% | Pending -SHC_3BB0A8C1_0x0043A8C0 | 0.0% | Pending +SHC_3BB0A8C1_0x0043A8C0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0043A8D0 | 0.0% | Pending +SHC_3BB0A8C1_0x0043A8D0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0043A8E0 | 0.0% | Pending @@ -13633,11 +13633,11 @@ SHC_3BB0A8C1_0x00440360 | 0.0% | Pending SHC_3BB0A8C1_0x004403D0 | 0.0% | Pending -SHC_3BB0A8C1_0x00440400 | 0.0% | Pending +SHC_3BB0A8C1_0x00440400 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00440410 | 0.0% | Pending +SHC_3BB0A8C1_0x00440410 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00440420 | 0.0% | Pending +SHC_3BB0A8C1_0x00440420 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00440430 | 0.0% | Pending @@ -16649,11 +16649,11 @@ SHC_3BB0A8C1_0x0044A720 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0044A830 | 0.0% | Pending -SHC_3BB0A8C1_0x0044AA70 | 0.0% | Pending +SHC_3BB0A8C1_0x0044AA70 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0044AA80 | 0.0% | Pending +SHC_3BB0A8C1_0x0044AA80 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0044AAA0 | 0.0% | Pending +SHC_3BB0A8C1_0x0044AAA0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0044AAB0 | 100.0% | Reimplemented @@ -16891,7 +16891,7 @@ SHC_3BB0A8C1_0x0044C3F0 | 0.0% | Pending SHC_3BB0A8C1_0x0044C3F4 | 0.0% | Pending -SHC_3BB0A8C1_0x0044C400 | 0.0% | Pending +SHC_3BB0A8C1_0x0044C400 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0044C410 | 100.0% | Reimplemented @@ -16915,17 +16915,17 @@ SHC_3BB0A8C1_0x0044CBE0 | 0.0% | Pending SHC_3BB0A8C1_0x0044CC30 | 0.0% | Pending -SHC_3BB0A8C1_0x0044CCA0 | 0.0% | Pending +SHC_3BB0A8C1_0x0044CCA0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0044CCC0 | 0.0% | Pending +SHC_3BB0A8C1_0x0044CCC0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0044CCD0 | 0.0% | Pending +SHC_3BB0A8C1_0x0044CCD0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0044CCF0 | 0.0% | Pending +SHC_3BB0A8C1_0x0044CCF0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0044CD10 | 0.0% | Pending +SHC_3BB0A8C1_0x0044CD10 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0044CD30 | 0.0% | Pending +SHC_3BB0A8C1_0x0044CD30 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0044CD40 | 0.0% | Pending @@ -16987,7 +16987,7 @@ SHC_3BB0A8C1_0x00454960 | 0.0% | Pending SHC_3BB0A8C1_0x00454990 | 0.0% | Pending -SHC_3BB0A8C1_0x004549C0 | 0.0% | Pending +SHC_3BB0A8C1_0x004549C0 | 100.0% | Different register allocation SHC_3BB0A8C1_0x004549F0 | 0.0% | Pending @@ -16999,9 +16999,9 @@ SHC_3BB0A8C1_0x00454CE0 | 0.0% | Pending SHC_3BB0A8C1_0x00454D20 | 0.0% | Pending -SHC_3BB0A8C1_0x00454EE0 | 0.0% | Pending +SHC_3BB0A8C1_0x00454EE0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00454EF0 | 0.0% | Pending +SHC_3BB0A8C1_0x00454EF0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00454F00 | 0.0% | Pending @@ -17045,7 +17045,7 @@ SHC_3BB0A8C1_0x00455E40 | 0.0% | Pending SHC_3BB0A8C1_0x004560F0 | 0.0% | Pending -SHC_3BB0A8C1_0x004563B0 | 0.0% | Pending +SHC_3BB0A8C1_0x004563B0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004563D0 | 0.0% | Pending @@ -17693,9 +17693,9 @@ SHC_3BB0A8C1_0x004585B0 | 0.0% | Pending SHC_3BB0A8C1_0x004585F0 | 0.0% | Pending -SHC_3BB0A8C1_0x004586D0 | 0.0% | Pending +SHC_3BB0A8C1_0x004586D0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004586F0 | 0.0% | Pending +SHC_3BB0A8C1_0x004586F0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00458700 | 0.0% | Pending @@ -17713,7 +17713,7 @@ SHC_3BB0A8C1_0x00458820 | 0.0% | Pending SHC_3BB0A8C1_0x00458840 | 0.0% | Pending -SHC_3BB0A8C1_0x00458890 | 0.0% | Pending +SHC_3BB0A8C1_0x00458890 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004588A0 | 100.0% | Reimplemented @@ -18017,7 +18017,7 @@ SHC_3BB0A8C1_0x0045ACC0 | 0.0% | Pending SHC_3BB0A8C1_0x0045AD10 | 0.0% | Pending -SHC_3BB0A8C1_0x0045AE00 | 0.0% | Pending +SHC_3BB0A8C1_0x0045AE00 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0045AE10 | 0.0% | Pending @@ -18145,11 +18145,11 @@ SHC_3BB0A8C1_0x0045CA20 | 0.0% | Pending SHC_3BB0A8C1_0x0045CD10 | 0.0% | Pending -SHC_3BB0A8C1_0x0045D060 | 0.0% | Pending +SHC_3BB0A8C1_0x0045D060 | 100.0% | Our version optimizes to a jump, while the original re-pushes the args SHC_3BB0A8C1_0x0045D080 | 0.0% | Pending -SHC_3BB0A8C1_0x0045D0B0 | 0.0% | Pending +SHC_3BB0A8C1_0x0045D0B0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0045D0C0 | 0.0% | Pending @@ -18335,7 +18335,7 @@ SHC_3BB0A8C1_0x0045D430 | 0.0% | Pending SHC_3BB0A8C1_0x0045D460 | 0.0% | Pending -SHC_3BB0A8C1_0x0045D690 | 0.0% | Pending +SHC_3BB0A8C1_0x0045D690 | 60.0% | Probably needs to be part of 0x004403d0 SHC_3BB0A8C1_0x0045D6C0 | 0.0% | Pending @@ -18349,9 +18349,9 @@ SHC_3BB0A8C1_0x0045D950 | 0.0% | Pending SHC_3BB0A8C1_0x0045D990 | 0.0% | Pending -SHC_3BB0A8C1_0x0045D9E0 | 0.0% | Pending +SHC_3BB0A8C1_0x0045D9E0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0045DA20 | 0.0% | Pending +SHC_3BB0A8C1_0x0045DA20 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0045DA40 | 0.0% | Pending @@ -18747,7 +18747,7 @@ SHC_3BB0A8C1_0x0045F0CD | 0.0% | Pending SHC_3BB0A8C1_0x0045F0D0 | 0.0% | Pending -SHC_3BB0A8C1_0x0045F120 | 0.0% | Pending +SHC_3BB0A8C1_0x0045F120 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0045F130 | 0.0% | Pending @@ -18833,7 +18833,7 @@ SHC_3BB0A8C1_0x004614F0 | 0.0% | Pending SHC_3BB0A8C1_0x00461520 | 0.0% | Pending -SHC_3BB0A8C1_0x00461550 | 0.0% | Pending +SHC_3BB0A8C1_0x00461550 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00461570 | 0.0% | Pending @@ -18893,7 +18893,7 @@ SHC_3BB0A8C1_0x00461F90 | 0.0% | Pending SHC_3BB0A8C1_0x004620F0 | 0.0% | Pending -SHC_3BB0A8C1_0x00462150 | 0.0% | Pending +SHC_3BB0A8C1_0x00462150 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00462190 | 0.0% | Pending @@ -19153,7 +19153,7 @@ SHC_3BB0A8C1_0x00462FE0 | 0.0% | Pending SHC_3BB0A8C1_0x00462FF0 | 0.0% | Pending -SHC_3BB0A8C1_0x004630B0 | 0.0% | Pending +SHC_3BB0A8C1_0x004630B0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004630D0 | 0.0% | Pending @@ -19843,11 +19843,11 @@ SHC_3BB0A8C1_0x00464856 | 0.0% | Pending SHC_3BB0A8C1_0x00464860 | 0.0% | Pending -SHC_3BB0A8C1_0x004649C0 | 0.0% | Pending +SHC_3BB0A8C1_0x004649C0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004649D0 | 0.0% | Pending -SHC_3BB0A8C1_0x00464D90 | 0.0% | Pending +SHC_3BB0A8C1_0x00464D90 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00464DA0 | 0.0% | Pending @@ -19905,11 +19905,11 @@ SHC_3BB0A8C1_0x00465700 | 0.0% | Pending SHC_3BB0A8C1_0x004657B0 | 0.0% | Pending -SHC_3BB0A8C1_0x00465800 | 0.0% | Pending +SHC_3BB0A8C1_0x00465800 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00465820 | 0.0% | Pending -SHC_3BB0A8C1_0x00465890 | 0.0% | Pending +SHC_3BB0A8C1_0x00465890 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004658B0 | 0.0% | Pending @@ -19987,9 +19987,9 @@ SHC_3BB0A8C1_0x00466C20 | 0.0% | Pending SHC_3BB0A8C1_0x00466D10 | 0.0% | Pending -SHC_3BB0A8C1_0x00466E00 | 0.0% | Pending +SHC_3BB0A8C1_0x00466E00 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00466E10 | 0.0% | Pending +SHC_3BB0A8C1_0x00466E10 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00466E20 | 0.0% | Pending @@ -20051,7 +20051,7 @@ SHC_3BB0A8C1_0x00467E04 | 0.0% | Pending SHC_3BB0A8C1_0x00467E26 | 0.0% | Pending -SHC_3BB0A8C1_0x00467E40 | 0.0% | Pending +SHC_3BB0A8C1_0x00467E40 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00467E50 | 0.0% | Pending @@ -20065,7 +20065,7 @@ SHC_3BB0A8C1_0x00467F80 | 0.0% | Pending SHC_3BB0A8C1_0x00468030 | 0.0% | Pending -SHC_3BB0A8C1_0x004680B0 | 0.0% | Pending +SHC_3BB0A8C1_0x004680B0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004680C0 | 0.0% | Pending @@ -20097,7 +20097,7 @@ SHC_3BB0A8C1_0x00468C30 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00468C40 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00468C50 | 0.0% | Pending +SHC_3BB0A8C1_0x00468C50 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00468C80 | 0.0% | Pending @@ -20123,23 +20123,23 @@ SHC_3BB0A8C1_0x004694A0 | 0.0% | Pending SHC_3BB0A8C1_0x00469790 | 0.0% | Pending -SHC_3BB0A8C1_0x004697C0 | 0.0% | Pending +SHC_3BB0A8C1_0x004697C0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004697E0 | 0.0% | Pending +SHC_3BB0A8C1_0x004697E0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00469800 | 0.0% | Pending SHC_3BB0A8C1_0x00469860 | 0.0% | Pending -SHC_3BB0A8C1_0x00469870 | 0.0% | Pending +SHC_3BB0A8C1_0x00469870 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00469880 | 0.0% | Pending +SHC_3BB0A8C1_0x00469880 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004698A0 | 0.0% | Pending +SHC_3BB0A8C1_0x004698A0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004698C0 | 0.0% | Pending +SHC_3BB0A8C1_0x004698C0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004698D0 | 0.0% | Pending +SHC_3BB0A8C1_0x004698D0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004698F0 | 0.0% | Pending @@ -20167,9 +20167,9 @@ SHC_3BB0A8C1_0x00469E70 | 0.0% | Pending SHC_3BB0A8C1_0x00469F10 | 0.0% | Pending -SHC_3BB0A8C1_0x00469F20 | 0.0% | Pending +SHC_3BB0A8C1_0x00469F20 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00469F40 | 0.0% | Pending +SHC_3BB0A8C1_0x00469F40 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00469F50 | 0.0% | Pending @@ -20695,7 +20695,7 @@ SHC_3BB0A8C1_0x0046A4C8 | 0.0% | Pending SHC_3BB0A8C1_0x0046A4D0 | 0.0% | Pending -SHC_3BB0A8C1_0x0046A720 | 0.0% | Pending +SHC_3BB0A8C1_0x0046A720 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0046A740 | 100.0% | Reimplemented @@ -20743,11 +20743,11 @@ SHC_3BB0A8C1_0x0046B1B0 | 0.0% | Pending SHC_3BB0A8C1_0x0046B1F0 | 0.0% | Pending -SHC_3BB0A8C1_0x0046B2F0 | 0.0% | Pending +SHC_3BB0A8C1_0x0046B2F0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0046B300 | 0.0% | Pending +SHC_3BB0A8C1_0x0046B300 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0046B320 | 0.0% | Pending +SHC_3BB0A8C1_0x0046B320 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0046B340 | 0.0% | Pending @@ -20969,7 +20969,7 @@ SHC_3BB0A8C1_0x0046CEB0 | 0.0% | Pending SHC_3BB0A8C1_0x0046CEC0 | 0.0% | Pending -SHC_3BB0A8C1_0x0046CED0 | 0.0% | Pending +SHC_3BB0A8C1_0x0046CED0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0046CEF0 | 0.0% | Pending @@ -21201,7 +21201,7 @@ SHC_3BB0A8C1_0x0046F690 | 0.0% | Pending SHC_3BB0A8C1_0x0046F6B0 | 0.0% | Pending -SHC_3BB0A8C1_0x0046F730 | 0.0% | Pending +SHC_3BB0A8C1_0x0046F730 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0046F750 | 0.0% | Pending @@ -21331,7 +21331,7 @@ SHC_3BB0A8C1_0x004719E0 | 0.0% | Pending SHC_3BB0A8C1_0x00471A00 | 0.0% | Pending -SHC_3BB0A8C1_0x00471A80 | 0.0% | Pending +SHC_3BB0A8C1_0x00471A80 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00471AA0 | 0.0% | Pending @@ -22307,7 +22307,7 @@ SHC_3BB0A8C1_0x0047D0D8 | 0.0% | Pending SHC_3BB0A8C1_0x0047D0DC | 0.0% | Pending -SHC_3BB0A8C1_0x0047D0E0 | 0.0% | Pending +SHC_3BB0A8C1_0x0047D0E0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0047D100 | 0.0% | Pending @@ -22327,7 +22327,7 @@ SHC_3BB0A8C1_0x0047D3DC | 0.0% | Pending SHC_3BB0A8C1_0x0047D3E0 | 0.0% | Pending -SHC_3BB0A8C1_0x0047D3F0 | 0.0% | Pending +SHC_3BB0A8C1_0x0047D3F0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0047D410 | 0.0% | Pending @@ -22393,7 +22393,7 @@ SHC_3BB0A8C1_0x0047EC10 | 0.0% | Pending SHC_3BB0A8C1_0x0047EDE0 | 0.0% | Pending -SHC_3BB0A8C1_0x0047EEB0 | 0.0% | Pending +SHC_3BB0A8C1_0x0047EEB0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0047EED0 | 0.0% | Pending @@ -22547,7 +22547,7 @@ SHC_3BB0A8C1_0x004821D5 | 0.0% | Pending SHC_3BB0A8C1_0x004821E0 | 0.0% | Pending -SHC_3BB0A8C1_0x00482280 | 0.0% | Pending +SHC_3BB0A8C1_0x00482280 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00482290 | 0.0% | Pending @@ -23167,7 +23167,7 @@ SHC_3BB0A8C1_0x0048BD40 | 0.0% | Pending SHC_3BB0A8C1_0x0048BD80 | 0.0% | Pending -SHC_3BB0A8C1_0x0048BF70 | 0.0% | Pending +SHC_3BB0A8C1_0x0048BF70 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0048BF80 | 0.0% | Pending @@ -23357,7 +23357,7 @@ SHC_3BB0A8C1_0x0048F841 | 0.0% | Pending SHC_3BB0A8C1_0x0048F842 | 0.0% | Pending -SHC_3BB0A8C1_0x0048F850 | 0.0% | Pending +SHC_3BB0A8C1_0x0048F850 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0048F870 | 0.0% | Pending @@ -23407,7 +23407,7 @@ SHC_3BB0A8C1_0x00491680 | 0.0% | Pending SHC_3BB0A8C1_0x004916C0 | 0.0% | Pending -SHC_3BB0A8C1_0x00491730 | 0.0% | Pending +SHC_3BB0A8C1_0x00491730 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00491750 | 0.0% | Pending @@ -24041,7 +24041,7 @@ SHC_3BB0A8C1_0x004941E7 | 0.0% | Pending SHC_3BB0A8C1_0x004941E8 | 0.0% | Pending -SHC_3BB0A8C1_0x004941F0 | 0.0% | Pending +SHC_3BB0A8C1_0x004941F0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00494210 | 0.0% | Pending @@ -24345,11 +24345,11 @@ SHC_3BB0A8C1_0x00496E1A | 0.0% | Pending SHC_3BB0A8C1_0x00496E20 | 0.0% | Pending -SHC_3BB0A8C1_0x00496E30 | 0.0% | Pending +SHC_3BB0A8C1_0x00496E30 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00496E40 | 0.0% | Pending -SHC_3BB0A8C1_0x00496EA0 | 0.0% | Pending +SHC_3BB0A8C1_0x00496EA0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00496EC0 | 0.0% | Pending @@ -24417,7 +24417,7 @@ SHC_3BB0A8C1_0x0049AF50 | 0.0% | Pending SHC_3BB0A8C1_0x0049B000 | 0.0% | Pending -SHC_3BB0A8C1_0x0049B1C0 | 0.0% | Pending +SHC_3BB0A8C1_0x0049B1C0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0049B1D0 | 0.0% | Pending @@ -25535,11 +25535,11 @@ SHC_3BB0A8C1_0x004AAB00 | 0.0% | Pending SHC_3BB0A8C1_0x004AAB20 | 0.0% | Pending -SHC_3BB0A8C1_0x004AAB40 | 0.0% | Pending +SHC_3BB0A8C1_0x004AAB40 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004AAB50 | 0.0% | Pending -SHC_3BB0A8C1_0x004AB440 | 0.0% | Pending +SHC_3BB0A8C1_0x004AB440 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004AB460 | 0.0% | Pending @@ -25915,7 +25915,7 @@ SHC_3BB0A8C1_0x004AF6E0 | 0.0% | Pending SHC_3BB0A8C1_0x004AF700 | 0.0% | Pending -SHC_3BB0A8C1_0x004AF800 | 0.0% | Pending +SHC_3BB0A8C1_0x004AF800 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004AF820 | 0.0% | Pending @@ -27077,7 +27077,7 @@ SHC_3BB0A8C1_0x004B7730 | 0.0% | Pending SHC_3BB0A8C1_0x004B77A0 | 0.0% | Pending -SHC_3BB0A8C1_0x004B77E0 | 0.0% | Pending +SHC_3BB0A8C1_0x004B77E0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004B7800 | 0.0% | Pending @@ -27107,9 +27107,9 @@ SHC_3BB0A8C1_0x004B8050 | 0.0% | Pending SHC_3BB0A8C1_0x004B8080 | 0.0% | Pending -SHC_3BB0A8C1_0x004B8200 | 0.0% | Pending +SHC_3BB0A8C1_0x004B8200 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004B8210 | 0.0% | Pending +SHC_3BB0A8C1_0x004B8210 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004B8220 | 0.0% | Pending @@ -27639,7 +27639,7 @@ SHC_3BB0A8C1_0x004B9528 | 0.0% | Pending SHC_3BB0A8C1_0x004B9530 | 0.0% | Pending -SHC_3BB0A8C1_0x004B9610 | 0.0% | Pending +SHC_3BB0A8C1_0x004B9610 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004B9620 | 0.0% | Pending @@ -30095,7 +30095,7 @@ SHC_3BB0A8C1_0x004BC6C0 | 0.0% | Pending SHC_3BB0A8C1_0x004BC6F0 | 0.0% | Pending -SHC_3BB0A8C1_0x004BC770 | 0.0% | Pending +SHC_3BB0A8C1_0x004BC770 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004BC790 | 0.0% | Pending @@ -34139,7 +34139,7 @@ SHC_3BB0A8C1_0x004C6294 | 0.0% | Pending SHC_3BB0A8C1_0x004C6298 | 0.0% | Pending -SHC_3BB0A8C1_0x004C62A0 | 0.0% | Pending +SHC_3BB0A8C1_0x004C62A0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004C62C0 | 0.0% | Pending @@ -36019,7 +36019,7 @@ SHC_3BB0A8C1_0x004D91D0 | 0.0% | Pending SHC_3BB0A8C1_0x004D9230 | 0.0% | Pending -SHC_3BB0A8C1_0x004D9270 | 0.0% | Pending +SHC_3BB0A8C1_0x004D9270 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004D9290 | 0.0% | Pending @@ -36055,7 +36055,7 @@ SHC_3BB0A8C1_0x004D9CC0 | 0.0% | Pending SHC_3BB0A8C1_0x004D9D60 | 0.0% | Pending -SHC_3BB0A8C1_0x004D9D90 | 0.0% | Pending +SHC_3BB0A8C1_0x004D9D90 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004D9DB0 | 0.0% | Pending @@ -36985,7 +36985,7 @@ SHC_3BB0A8C1_0x004E66F0 | 0.0% | Pending SHC_3BB0A8C1_0x004E7770 | 0.0% | Pending -SHC_3BB0A8C1_0x004E7800 | 0.0% | Pending +SHC_3BB0A8C1_0x004E7800 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004E7810 | 0.0% | Pending @@ -37335,9 +37335,9 @@ SHC_3BB0A8C1_0x004E8C4C | 0.0% | Pending SHC_3BB0A8C1_0x004E8C50 | 0.0% | Pending -SHC_3BB0A8C1_0x004E8C90 | 0.0% | Pending +SHC_3BB0A8C1_0x004E8C90 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004E8CA0 | 0.0% | Pending +SHC_3BB0A8C1_0x004E8CA0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004E8CC0 | 0.0% | Pending @@ -37933,7 +37933,7 @@ SHC_3BB0A8C1_0x004ED3B0 | 0.0% | Pending SHC_3BB0A8C1_0x004ED410 | 0.0% | Pending -SHC_3BB0A8C1_0x004EDC90 | 0.0% | Pending +SHC_3BB0A8C1_0x004EDC90 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004EDCB0 | 0.0% | Pending @@ -38471,7 +38471,7 @@ SHC_3BB0A8C1_0x004F2970 | 0.0% | Pending SHC_3BB0A8C1_0x004F29C0 | 0.0% | Pending -SHC_3BB0A8C1_0x004F2A10 | 0.0% | Pending +SHC_3BB0A8C1_0x004F2A10 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004F2A20 | 100.0% | Reimplemented @@ -38733,9 +38733,9 @@ SHC_3BB0A8C1_0x004F69D0 | 0.0% | Pending SHC_3BB0A8C1_0x004F6A20 | 0.0% | Pending -SHC_3BB0A8C1_0x004F6A60 | 0.0% | Pending +SHC_3BB0A8C1_0x004F6A60 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004F6A70 | 0.0% | Pending +SHC_3BB0A8C1_0x004F6A70 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004F6A80 | 0.0% | Pending @@ -38755,11 +38755,11 @@ SHC_3BB0A8C1_0x004F6F90 | 0.0% | Pending SHC_3BB0A8C1_0x004F6FD0 | 0.0% | Pending -SHC_3BB0A8C1_0x004F70B0 | 0.0% | Pending +SHC_3BB0A8C1_0x004F70B0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004F70D0 | 0.0% | Pending -SHC_3BB0A8C1_0x004F70E0 | 0.0% | Pending +SHC_3BB0A8C1_0x004F70E0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004F70F0 | 0.0% | Pending @@ -41425,7 +41425,7 @@ SHC_3BB0A8C1_0x005000E0 | 0.0% | Pending SHC_3BB0A8C1_0x00500180 | 0.0% | Pending -SHC_3BB0A8C1_0x00500210 | 0.0% | Pending +SHC_3BB0A8C1_0x00500210 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00500250 | 0.0% | Pending @@ -41503,7 +41503,7 @@ SHC_3BB0A8C1_0x005010B8 | 0.0% | Pending SHC_3BB0A8C1_0x005010BC | 0.0% | Pending -SHC_3BB0A8C1_0x005010C0 | 0.0% | Pending +SHC_3BB0A8C1_0x005010C0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x005010D0 | 0.0% | Pending @@ -46161,7 +46161,7 @@ SHC_3BB0A8C1_0x0051D5D0 | 0.0% | Pending SHC_3BB0A8C1_0x0051D5E0 | 0.0% | Pending -SHC_3BB0A8C1_0x0051D680 | 0.0% | Pending +SHC_3BB0A8C1_0x0051D680 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0051D690 | 0.0% | Pending @@ -46767,7 +46767,7 @@ SHC_3BB0A8C1_0x00522090 | 0.0% | Pending SHC_3BB0A8C1_0x00522110 | 0.0% | Pending -SHC_3BB0A8C1_0x00522150 | 0.0% | Pending +SHC_3BB0A8C1_0x00522150 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00522160 | 0.0% | Pending @@ -46851,7 +46851,7 @@ SHC_3BB0A8C1_0x00523630 | 0.0% | Pending SHC_3BB0A8C1_0x005236A0 | 0.0% | Pending -SHC_3BB0A8C1_0x00523730 | 0.0% | Pending +SHC_3BB0A8C1_0x00523730 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00523750 | 0.0% | Pending @@ -46917,7 +46917,7 @@ SHC_3BB0A8C1_0x00524EF0 | 0.0% | Pending SHC_3BB0A8C1_0x00525060 | 0.0% | Pending -SHC_3BB0A8C1_0x00525090 | 0.0% | Pending +SHC_3BB0A8C1_0x00525090 | 100.0% | Reimplemented SHC_3BB0A8C1_0x005250B0 | 0.0% | Pending @@ -49233,7 +49233,7 @@ SHC_3BB0A8C1_0x0052B9E4 | 0.0% | Pending SHC_3BB0A8C1_0x0052B9E8 | 0.0% | Pending -SHC_3BB0A8C1_0x0052B9F0 | 0.0% | Pending +SHC_3BB0A8C1_0x0052B9F0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0052BA10 | 0.0% | Pending @@ -49649,7 +49649,7 @@ SHC_3BB0A8C1_0x00530C40 | 0.0% | Pending SHC_3BB0A8C1_0x00530CF0 | 0.0% | Pending -SHC_3BB0A8C1_0x00530D50 | 0.0% | Pending +SHC_3BB0A8C1_0x00530D50 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00530D70 | 0.0% | Pending @@ -50643,7 +50643,7 @@ SHC_3BB0A8C1_0x00532F5D | 0.0% | Pending SHC_3BB0A8C1_0x00532F5E | 0.0% | Pending -SHC_3BB0A8C1_0x00532F60 | 0.0% | Pending +SHC_3BB0A8C1_0x00532F60 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00532F80 | 0.0% | Pending @@ -51067,9 +51067,9 @@ SHC_3BB0A8C1_0x00535514 | 0.0% | Pending SHC_3BB0A8C1_0x00535520 | 0.0% | Pending -SHC_3BB0A8C1_0x00535550 | 0.0% | Pending +SHC_3BB0A8C1_0x00535550 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00535560 | 0.0% | Pending +SHC_3BB0A8C1_0x00535560 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00535580 | 0.0% | Pending @@ -51203,7 +51203,7 @@ SHC_3BB0A8C1_0x00536A51 | 0.0% | Pending SHC_3BB0A8C1_0x00536A60 | 0.0% | Pending -SHC_3BB0A8C1_0x00536C70 | 0.0% | Pending +SHC_3BB0A8C1_0x00536C70 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00536C90 | 0.0% | Pending @@ -51231,7 +51231,7 @@ SHC_3BB0A8C1_0x00537160 | 0.0% | Pending SHC_3BB0A8C1_0x005371A0 | 0.0% | Pending -SHC_3BB0A8C1_0x005371E0 | 0.0% | Pending +SHC_3BB0A8C1_0x005371E0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x005371F0 | 0.0% | Pending From d5094da82b9cc24f44fbfc86f08108cb782e9eda Mon Sep 17 00:00:00 2001 From: Gynt Date: Thu, 24 Sep 2026 16:55:21 +0200 Subject: [PATCH 004/241] reimplement: SHC_3BB0A8C1_0x0046BD20 100.00% Reimplemented --- src/OpenSHC/Game/GameCore/isGameHaltingMenuOpen.cpp | 7 +++---- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/OpenSHC/Game/GameCore/isGameHaltingMenuOpen.cpp b/src/OpenSHC/Game/GameCore/isGameHaltingMenuOpen.cpp index db40763f4..6c22d806a 100644 --- a/src/OpenSHC/Game/GameCore/isGameHaltingMenuOpen.cpp +++ b/src/OpenSHC/Game/GameCore/isGameHaltingMenuOpen.cpp @@ -17,15 +17,14 @@ namespace Game { // FUNCTION: STRONGHOLDCRUSADER 0x0046BD20 BOOLEnum GameCore::isGameHaltingMenuOpen() { - if ((DAT_GameSynchronyState::instance.currentGameMode != OpenSHC::Game::GM_SOLITARY) - && (DAT_GameSynchronyState::instance.currentGameMode != OpenSHC::Game::GM_SKIRMISH_SINGLE_PLAYER)) { + if (DAT_GameSynchronyState::instance.currentGameMode != OpenSHC::Game::GM_SOLITARY + && DAT_GameSynchronyState::instance.currentGameMode != OpenSHC::Game::GM_SKIRMISH_SINGLE_PLAYER) { return FALSE; } if (DAT_MenuTextInputState::instance.currentModalDialog != OpenSHC::UI::Enums::MMT_NO_MENU) { return TRUE; } - return ( - uint)(DAT_MenuModalComposition1::instance.activeModalDialogID == OpenSHC::UI::Enums::MMT_IN_GAME_HELP_TEXT); + return DAT_MenuModalComposition1::instance.activeModalDialogID == OpenSHC::UI::Enums::MMT_IN_GAME_HELP_TEXT; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index c5130b6f2..1d0e02d70 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -20893,7 +20893,7 @@ SHC_3BB0A8C1_0x0046BBD0 | 0.0% | Pending SHC_3BB0A8C1_0x0046BC90 | 0.0% | Pending -SHC_3BB0A8C1_0x0046BD20 | 0.0% | Pending +SHC_3BB0A8C1_0x0046BD20 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0046BD50 | 0.0% | Pending From 27c0a9172b22f8d5b644b04ba6272e3ce1d717e7 Mon Sep 17 00:00:00 2001 From: Gynt Date: Thu, 24 Sep 2026 16:55:22 +0200 Subject: [PATCH 005/241] reimplement: SHC_3BB0A8C1_0x0046B2F0 100.00% Reimplemented --- src/OpenSHC/Game/GameCore/setViewOnExitUnk.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/OpenSHC/Game/GameCore/setViewOnExitUnk.cpp b/src/OpenSHC/Game/GameCore/setViewOnExitUnk.cpp index 15441316b..7a5e75fbd 100644 --- a/src/OpenSHC/Game/GameCore/setViewOnExitUnk.cpp +++ b/src/OpenSHC/Game/GameCore/setViewOnExitUnk.cpp @@ -7,7 +7,7 @@ namespace Game { using OpenSHC::UI::Enums::MenuViewType; // FUNCTION: STRONGHOLDCRUSADER 0x0046B2F0 - void GameCore::setViewOnExitUnk() { this->currentMenuViewType = ((MenuViewType)2); } + void GameCore::setViewOnExitUnk() { this->currentMenuViewType = (MenuViewType)2; } } } From 07c571a7f7dab1fbed3beda3888706ff2d747924 Mon Sep 17 00:00:00 2001 From: Gynt Date: Thu, 24 Sep 2026 16:55:22 +0200 Subject: [PATCH 006/241] reimplement: SHC_3BB0A8C1_0x004719E0 100.00% Reimplemented --- .../Game/GameCore/switchToScenarioDescriptionMenuView.cpp | 6 ++++-- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/OpenSHC/Game/GameCore/switchToScenarioDescriptionMenuView.cpp b/src/OpenSHC/Game/GameCore/switchToScenarioDescriptionMenuView.cpp index 8e2bf467b..a001da5b1 100644 --- a/src/OpenSHC/Game/GameCore/switchToScenarioDescriptionMenuView.cpp +++ b/src/OpenSHC/Game/GameCore/switchToScenarioDescriptionMenuView.cpp @@ -1,6 +1,8 @@ #include "OpenSHC/Game/GameCore.func.hpp" #include "OpenSHC/UI/Enums/MenuViewType.hpp" +#include "OpenSHC/Globals/DAT_GameCore.hpp" + namespace OpenSHC { namespace Game { @@ -10,9 +12,9 @@ namespace Game { void GameCore::switchToScenarioDescriptionMenuView() { MACRO_CALL_MEMBER(OpenSHC::Game::GameCore_Func::removeJesterAndLadyUnitsInCertainMissions, this)(); - MACRO_CALL_MEMBER(OpenSHC::Game::GameCore_Func::switchToMenuView, this)( + MACRO_CALL_MEMBER(OpenSHC::Game::GameCore_Func::switchToMenuView, DAT_GameCore::ptr)( OpenSHC::UI::Enums::MVT_SCENARIO_DESCRIPTION, 0); - this->field22_0x64 = 0; + DAT_GameCore::instance.field22_0x64 = 0; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 1d0e02d70..aebccaaf0 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -21327,7 +21327,7 @@ SHC_3BB0A8C1_0x004718C0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004718F0 | 0.0% | Pending -SHC_3BB0A8C1_0x004719E0 | 0.0% | Pending +SHC_3BB0A8C1_0x004719E0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00471A00 | 0.0% | Pending From 652b0629ec8daf8907f3ed6d4f9da1ddecca01ff Mon Sep 17 00:00:00 2001 From: Gynt Date: Thu, 24 Sep 2026 16:55:22 +0200 Subject: [PATCH 007/241] reimplement: SHC_3BB0A8C1_0x00459140 100.00% Reimplemented --- .../calculateTaxBribeExpenseForPlayer.cpp | 8 ++++---- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/OpenSHC/Game/GameStateStructures/calculateTaxBribeExpenseForPlayer.cpp b/src/OpenSHC/Game/GameStateStructures/calculateTaxBribeExpenseForPlayer.cpp index 2c0b4bd8d..c76ecac30 100644 --- a/src/OpenSHC/Game/GameStateStructures/calculateTaxBribeExpenseForPlayer.cpp +++ b/src/OpenSHC/Game/GameStateStructures/calculateTaxBribeExpenseForPlayer.cpp @@ -6,11 +6,11 @@ namespace Game { // FUNCTION: STRONGHOLDCRUSADER 0x00459140 int GameStateStructures::calculateTaxBribeExpenseForPlayer(int playerIndex, int taxStep, int currentPopulation) { - int _taxIncome = ((5 - taxStep) * currentPopulation) / 2; - if (this->playerDataArray[playerIndex].currentResources[0xf] <= 0) { - _taxIncome = 0; + int bribeExpense = ((5 - taxStep) * currentPopulation) / 2; + if (this->playerDataArray[playerIndex].currentResources[OpenSHC::Game::Resources::RT_GOLD] <= 0) { + bribeExpense = 0; } - return _taxIncome; + return bribeExpense; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index aebccaaf0..f3197b0cf 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -17757,7 +17757,7 @@ SHC_3BB0A8C1_0x00458F70 | 0.0% | Pending SHC_3BB0A8C1_0x00459080 | 0.0% | Pending -SHC_3BB0A8C1_0x00459140 | 0.0% | Pending +SHC_3BB0A8C1_0x00459140 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00459170 | 0.0% | Pending From 32c1406abfaffccd4782af81592917422fae32e3 Mon Sep 17 00:00:00 2001 From: Gynt Date: Thu, 24 Sep 2026 16:55:23 +0200 Subject: [PATCH 008/241] reimplement: SHC_3BB0A8C1_0x00459BB0 100.00% Reimplemented --- src/OpenSHC/Game/GameStateStructures/clearTribeHotKey.cpp | 6 +++--- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/OpenSHC/Game/GameStateStructures/clearTribeHotKey.cpp b/src/OpenSHC/Game/GameStateStructures/clearTribeHotKey.cpp index 88683c046..3c7ca31ed 100644 --- a/src/OpenSHC/Game/GameStateStructures/clearTribeHotKey.cpp +++ b/src/OpenSHC/Game/GameStateStructures/clearTribeHotKey.cpp @@ -10,9 +10,9 @@ namespace Game { // FUNCTION: STRONGHOLDCRUSADER 0x00459BB0 void GameStateStructures::clearTribeHotKey(int hotkeyID) { - for (int iVar2 = 0; iVar2 < 2500; iVar2++) { - this->hotkeyTribes[hotkeyID].units[iVar2].id = -1; - this->hotkeyTribes[hotkeyID].units[iVar2].uid = -1; + for (int i = 0; i < 2500; ++i) { + this->hotkeyTribes[hotkeyID].units[i].id = -1; + this->hotkeyTribes[hotkeyID].units[i].uid = -1; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index f3197b0cf..105ea51db 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -17907,7 +17907,7 @@ SHC_3BB0A8C1_0x00459A40 | 0.0% | Pending SHC_3BB0A8C1_0x00459B50 | 0.0% | Pending -SHC_3BB0A8C1_0x00459BB0 | 0.0% | Pending +SHC_3BB0A8C1_0x00459BB0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00459BE0 | 0.0% | Pending From 51226be820112827234186ab7c75e23d841e1d9e Mon Sep 17 00:00:00 2001 From: Gynt Date: Thu, 24 Sep 2026 16:55:23 +0200 Subject: [PATCH 009/241] reimplement: SHC_3BB0A8C1_0x00459BE0 100.00% Reimplemented --- src/OpenSHC/Game/GameStateStructures/fillWith0xFF.cpp | 9 ++++----- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/OpenSHC/Game/GameStateStructures/fillWith0xFF.cpp b/src/OpenSHC/Game/GameStateStructures/fillWith0xFF.cpp index 2948e6015..17d2d6213 100644 --- a/src/OpenSHC/Game/GameStateStructures/fillWith0xFF.cpp +++ b/src/OpenSHC/Game/GameStateStructures/fillWith0xFF.cpp @@ -10,11 +10,10 @@ namespace Game { // FUNCTION: STRONGHOLDCRUSADER 0x00459BE0 void GameStateStructures::fillWith0xFF() { - // fixme: This could have just been a memset(-1) to the whole region - for (int hotkeyEntry = 0; hotkeyEntry < 10; hotkeyEntry++) { - for (int iVar2 = 0; iVar2 < 2500; iVar2++) { - this->hotkeyTribes[hotkeyEntry].units[iVar2].id = -1; - this->hotkeyTribes[hotkeyEntry].units[iVar2].uid = -1; + for (int hotkeyID = 0; hotkeyID < 10; ++hotkeyID) { + for (int i = 0; i < 2500; ++i) { + this->hotkeyTribes[hotkeyID].units[i].id = -1; + this->hotkeyTribes[hotkeyID].units[i].uid = -1; } } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 105ea51db..08b751e8e 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -17909,7 +17909,7 @@ SHC_3BB0A8C1_0x00459B50 | 0.0% | Pending SHC_3BB0A8C1_0x00459BB0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00459BE0 | 0.0% | Pending +SHC_3BB0A8C1_0x00459BE0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00459BF0 | 0.0% | Pending From 0f1760b19b2be39c5bfe5b5bb54b6f77bd0307a6 Mon Sep 17 00:00:00 2001 From: Gynt Date: Thu, 24 Sep 2026 16:55:31 +0200 Subject: [PATCH 010/241] reimplement: SHC_3BB0A8C1_0x00458700 100.00% Reimplemented --- .../GameStateStructures/findNextPlayerWithMarketplace.cpp | 8 ++++---- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/OpenSHC/Game/GameStateStructures/findNextPlayerWithMarketplace.cpp b/src/OpenSHC/Game/GameStateStructures/findNextPlayerWithMarketplace.cpp index dc163282d..a0ab37c21 100644 --- a/src/OpenSHC/Game/GameStateStructures/findNextPlayerWithMarketplace.cpp +++ b/src/OpenSHC/Game/GameStateStructures/findNextPlayerWithMarketplace.cpp @@ -8,11 +8,11 @@ namespace Game { using OpenSHC::Game::Player::PlayerData; // FUNCTION: STRONGHOLDCRUSADER 0x00458700 - int GameStateStructures::findNextPlayerWithMarketplace(int param_1) + int GameStateStructures::findNextPlayerWithMarketplace(int playerID) { - for (int iVar1 = param_1 + 1; iVar1 < 9; iVar1++) { - if (0 < this->playerDataArray[iVar1].marketplace.id) { - return iVar1; + for (int nextPlayerID = playerID + 1; nextPlayerID < 9; ++nextPlayerID) { + if (this->playerDataArray[nextPlayerID].marketplace.id > 0) { + return nextPlayerID; } } return 0; diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 08b751e8e..680130859 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -17697,7 +17697,7 @@ SHC_3BB0A8C1_0x004586D0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004586F0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00458700 | 0.0% | Pending +SHC_3BB0A8C1_0x00458700 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00458720 | 0.0% | Pending From 4090f37ae8c70e0688af62c426f0728242f0f429 Mon Sep 17 00:00:00 2001 From: Gynt Date: Thu, 24 Sep 2026 16:55:32 +0200 Subject: [PATCH 011/241] reimplement: SHC_3BB0A8C1_0x004588D0 100.00% Reimplemented --- .../Game/GameStateStructures/getBuyPriceForOneUnit.cpp | 4 ++-- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/OpenSHC/Game/GameStateStructures/getBuyPriceForOneUnit.cpp b/src/OpenSHC/Game/GameStateStructures/getBuyPriceForOneUnit.cpp index 1b1410090..de9b24016 100644 --- a/src/OpenSHC/Game/GameStateStructures/getBuyPriceForOneUnit.cpp +++ b/src/OpenSHC/Game/GameStateStructures/getBuyPriceForOneUnit.cpp @@ -4,9 +4,9 @@ namespace OpenSHC { namespace Game { // FUNCTION: STRONGHOLDCRUSADER 0x004588D0 - int GameStateStructures::getBuyPriceForOneUnit(int param_1) + int GameStateStructures::getBuyPriceForOneUnit(int resourceType) { - return this->mapAndTime.buyAndSalesPriceArray[param_1].buyPrice / 5; + return this->mapAndTime.buyAndSalesPriceArray[resourceType].buyPrice / 5; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 680130859..7e8ec87e8 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -17717,7 +17717,7 @@ SHC_3BB0A8C1_0x00458890 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004588A0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004588D0 | 0.0% | Pending +SHC_3BB0A8C1_0x004588D0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004588F0 | 0.0% | Pending From 595208f84379855481fd6a5411645ad07d2ba2d1 Mon Sep 17 00:00:00 2001 From: Gynt Date: Thu, 24 Sep 2026 16:55:32 +0200 Subject: [PATCH 012/241] reimplement: SHC_3BB0A8C1_0x004591B0 100.00% Reimplemented --- .../getNumberToDisplayBribeIncome.cpp | 10 +++++----- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/OpenSHC/Game/GameStateStructures/getNumberToDisplayBribeIncome.cpp b/src/OpenSHC/Game/GameStateStructures/getNumberToDisplayBribeIncome.cpp index 93c881c58..7c636b95c 100644 --- a/src/OpenSHC/Game/GameStateStructures/getNumberToDisplayBribeIncome.cpp +++ b/src/OpenSHC/Game/GameStateStructures/getNumberToDisplayBribeIncome.cpp @@ -6,13 +6,13 @@ namespace Game { // FUNCTION: STRONGHOLDCRUSADER 0x004591B0 int GameStateStructures::getNumberToDisplayBribeIncome(int playerIndex, int taxStep, int currentPopulation) { - int iVar1 = 0; + int bribeIncome = 0; if (taxStep < 3) { - iVar1 = MACRO_CALL_MEMBER(OpenSHC::Game::GameStateStructures_Func::calculateTaxBribeExpenseForPlayer, this)( - playerIndex, taxStep, currentPopulation); - iVar1 = iVar1 * 4; + bribeIncome = MACRO_CALL_MEMBER(OpenSHC::Game::GameStateStructures_Func::calculateTaxBribeExpenseForPlayer, + this)(playerIndex, taxStep, currentPopulation) + * 4; } - return iVar1 / 10; + return bribeIncome / 10; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 7e8ec87e8..2db8d59df 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -17761,7 +17761,7 @@ SHC_3BB0A8C1_0x00459140 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00459170 | 0.0% | Pending -SHC_3BB0A8C1_0x004591B0 | 0.0% | Pending +SHC_3BB0A8C1_0x004591B0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004591F0 | 0.0% | Pending From 52f533ad7e43c9c86495d6feab66f332e8c1c0b3 Mon Sep 17 00:00:00 2001 From: Gynt Date: Thu, 24 Sep 2026 16:55:33 +0200 Subject: [PATCH 013/241] reimplement: SHC_3BB0A8C1_0x00459170 100.00% Reimplemented --- .../getNumberToDisplayPlayerTaxIncome.cpp | 12 ++++++------ status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/OpenSHC/Game/GameStateStructures/getNumberToDisplayPlayerTaxIncome.cpp b/src/OpenSHC/Game/GameStateStructures/getNumberToDisplayPlayerTaxIncome.cpp index 2fffb57e1..db54b1f3f 100644 --- a/src/OpenSHC/Game/GameStateStructures/getNumberToDisplayPlayerTaxIncome.cpp +++ b/src/OpenSHC/Game/GameStateStructures/getNumberToDisplayPlayerTaxIncome.cpp @@ -6,13 +6,13 @@ namespace Game { // FUNCTION: STRONGHOLDCRUSADER 0x00459170 int GameStateStructures::getNumberToDisplayPlayerTaxIncome(int playerIndex, int taxStep, int currentPopulation) { - int iVar1 = 0; - if (3 < taxStep) { - iVar1 = MACRO_CALL_MEMBER(OpenSHC::Game::GameStateStructures_Func::calculateTaxIncomeForPlayer, this)( - playerIndex, taxStep, currentPopulation); - iVar1 = iVar1 * 4; + int taxIncome = 0; + if (taxStep > 3) { + taxIncome = MACRO_CALL_MEMBER(OpenSHC::Game::GameStateStructures_Func::calculateTaxIncomeForPlayer, this)( + playerIndex, taxStep, currentPopulation) + * 4; } - return iVar1 / 10; + return taxIncome / 10; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 2db8d59df..b346785bf 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -17759,7 +17759,7 @@ SHC_3BB0A8C1_0x00459080 | 0.0% | Pending SHC_3BB0A8C1_0x00459140 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00459170 | 0.0% | Pending +SHC_3BB0A8C1_0x00459170 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004591B0 | 100.0% | Reimplemented From a230505e1ecfdd099331d41a328ac59e6cb331be Mon Sep 17 00:00:00 2001 From: Gynt Date: Thu, 24 Sep 2026 16:55:33 +0200 Subject: [PATCH 014/241] reimplement: SHC_3BB0A8C1_0x004588F0 100.00% Reimplemented --- src/OpenSHC/Game/GameStateStructures/getSalePriceOfGood.cpp | 4 ++-- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/OpenSHC/Game/GameStateStructures/getSalePriceOfGood.cpp b/src/OpenSHC/Game/GameStateStructures/getSalePriceOfGood.cpp index 3d06ffbb4..81a9dc7d6 100644 --- a/src/OpenSHC/Game/GameStateStructures/getSalePriceOfGood.cpp +++ b/src/OpenSHC/Game/GameStateStructures/getSalePriceOfGood.cpp @@ -8,9 +8,9 @@ namespace Game { using OpenSHC::Game::Resources::ResourceType; // FUNCTION: STRONGHOLDCRUSADER 0x004588F0 - int GameStateStructures::getSalePriceOfGood(ResourceType param_1) + int GameStateStructures::getSalePriceOfGood(ResourceType resourceType) { - return this->mapAndTime.buyAndSalesPriceArray[param_1].salesPrice / 5; + return this->mapAndTime.buyAndSalesPriceArray[resourceType].salesPrice / 5; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index b346785bf..d48c93483 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -17719,7 +17719,7 @@ SHC_3BB0A8C1_0x004588A0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004588D0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004588F0 | 0.0% | Pending +SHC_3BB0A8C1_0x004588F0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00458910 | 100.0% | Reimplemented From 0e11bb130026e81dfa876f3df8b19a3a89d83520 Mon Sep 17 00:00:00 2001 From: Gynt Date: Thu, 24 Sep 2026 16:55:33 +0200 Subject: [PATCH 015/241] reimplement: SHC_3BB0A8C1_0x004596D0 100.00% Reimplemented --- .../Game/GameStateStructures/getTeamsDifferent.cpp | 9 ++++++--- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/OpenSHC/Game/GameStateStructures/getTeamsDifferent.cpp b/src/OpenSHC/Game/GameStateStructures/getTeamsDifferent.cpp index e7d0eac32..67a1aeab3 100644 --- a/src/OpenSHC/Game/GameStateStructures/getTeamsDifferent.cpp +++ b/src/OpenSHC/Game/GameStateStructures/getTeamsDifferent.cpp @@ -10,10 +10,13 @@ namespace Game { // FUNCTION: STRONGHOLDCRUSADER 0x004596D0 BOOLEnum GameStateStructures::getTeamsDifferent(int firstPlayerId, int secondPlayerId) { - if ((firstPlayerId != 0) && (secondPlayerId != 0)) { - return this->mapAndTime.playerTeams[firstPlayerId] != this->mapAndTime.playerTeams[secondPlayerId]; + if (firstPlayerId == 0) { + return FALSE; } - return FALSE; + if (secondPlayerId == 0) { + return FALSE; + } + return this->mapAndTime.playerTeams[firstPlayerId] != this->mapAndTime.playerTeams[secondPlayerId]; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index d48c93483..256304734 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -17889,7 +17889,7 @@ SHC_3BB0A8C1_0x004595D0 | 0.0% | Pending SHC_3BB0A8C1_0x00459640 | 0.0% | Pending -SHC_3BB0A8C1_0x004596D0 | 0.0% | Pending +SHC_3BB0A8C1_0x004596D0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00459700 | 0.0% | Pending From 394619e1d5418d403626da1af45df752e184249a Mon Sep 17 00:00:00 2001 From: Gynt Date: Thu, 24 Sep 2026 16:55:34 +0200 Subject: [PATCH 016/241] reimplement: SHC_3BB0A8C1_0x004563B0 100.00% Reimplemented --- .../Game/GameStateStructures/isFullIDEqualsToMinus1.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/Game/GameStateStructures/isFullIDEqualsToMinus1.cpp b/src/OpenSHC/Game/GameStateStructures/isFullIDEqualsToMinus1.cpp index 967b56e23..ec6919762 100644 --- a/src/OpenSHC/Game/GameStateStructures/isFullIDEqualsToMinus1.cpp +++ b/src/OpenSHC/Game/GameStateStructures/isFullIDEqualsToMinus1.cpp @@ -10,9 +10,9 @@ namespace Game { using OpenSHC::WindowsHelper::Enums::BOOLEnum; // FUNCTION: STRONGHOLDCRUSADER 0x004563B0 - BOOLEnum GameStateStructures::isFullIDEqualsToMinus1(int param_1) + BOOLEnum GameStateStructures::isFullIDEqualsToMinus1(int playerID) { - return DAT_GameSynchronyState::instance.currentPlayerFullIDArray[param_1] == -1; + return DAT_GameSynchronyState::instance.currentPlayerFullIDArray[playerID] == -1; } } From bba7d95b0284f0c84a5270292e9cfd2ae92a7010 Mon Sep 17 00:00:00 2001 From: Gynt Date: Thu, 24 Sep 2026 16:55:34 +0200 Subject: [PATCH 017/241] reimplement: SHC_3BB0A8C1_0x0045AF00 100.00% Reimplemented --- .../resetSomethingBuildingRelatedForAllPlayers.cpp | 6 +++--- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/OpenSHC/Game/GameStateStructures/resetSomethingBuildingRelatedForAllPlayers.cpp b/src/OpenSHC/Game/GameStateStructures/resetSomethingBuildingRelatedForAllPlayers.cpp index 84106d9c4..ec872c12d 100644 --- a/src/OpenSHC/Game/GameStateStructures/resetSomethingBuildingRelatedForAllPlayers.cpp +++ b/src/OpenSHC/Game/GameStateStructures/resetSomethingBuildingRelatedForAllPlayers.cpp @@ -6,10 +6,10 @@ namespace Game { // FUNCTION: STRONGHOLDCRUSADER 0x0045AF00 void GameStateStructures::resetSomethingBuildingRelatedForAllPlayers() { - for (int playerID = 1; playerID < 9; playerID++) { - for (int iVar1 = 0; iVar1 < 20; iVar1++) { + for (int playerID = 1; playerID < 9; ++playerID) { + for (int category = 0; category < 20; ++category) { MACRO_CALL_MEMBER(OpenSHC::Game::GameStateStructures_Func::validateBuildingCategoryReference, this)( - playerID, iVar1); + playerID, category); } } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 256304734..276239deb 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -18025,7 +18025,7 @@ SHC_3BB0A8C1_0x0045AE70 | 0.0% | Pending SHC_3BB0A8C1_0x0045AEB0 | 0.0% | Pending -SHC_3BB0A8C1_0x0045AF00 | 0.0% | Pending +SHC_3BB0A8C1_0x0045AF00 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0045AF30 | 0.0% | Pending From 910fd62b7efc60b5b06467ca916bb0519723fa01 Mon Sep 17 00:00:00 2001 From: Gynt Date: Thu, 24 Sep 2026 16:55:34 +0200 Subject: [PATCH 018/241] reimplement: SHC_3BB0A8C1_0x004586F0 100.00% Reimplemented --- src/OpenSHC/Game/GameStateStructures/resetTraderState.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/OpenSHC/Game/GameStateStructures/resetTraderState.cpp b/src/OpenSHC/Game/GameStateStructures/resetTraderState.cpp index 6f20f5f20..e7ecb4fdf 100644 --- a/src/OpenSHC/Game/GameStateStructures/resetTraderState.cpp +++ b/src/OpenSHC/Game/GameStateStructures/resetTraderState.cpp @@ -9,11 +9,9 @@ namespace Game { // FUNCTION: STRONGHOLDCRUSADER 0x004586F0 void GameStateStructures::resetTraderState() - { this->mapAndTime.traderRelated2 = 0; this->mapAndTime.traderRelatedCounter1 = 0; - return; } } From b640bc497db55d743f383cf423853616e02d2186 Mon Sep 17 00:00:00 2001 From: Gynt Date: Thu, 24 Sep 2026 16:55:35 +0200 Subject: [PATCH 019/241] reimplement: SHC_3BB0A8C1_0x0045B460 100.00% Reimplemented --- src/OpenSHC/Game/GameStateStructures/switchPlayerOwnership.cpp | 2 +- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/Game/GameStateStructures/switchPlayerOwnership.cpp b/src/OpenSHC/Game/GameStateStructures/switchPlayerOwnership.cpp index 5f57f695a..179dd6b69 100644 --- a/src/OpenSHC/Game/GameStateStructures/switchPlayerOwnership.cpp +++ b/src/OpenSHC/Game/GameStateStructures/switchPlayerOwnership.cpp @@ -10,7 +10,7 @@ namespace Game { // FUNCTION: STRONGHOLDCRUSADER 0x0045B460 void GameStateStructures::switchPlayerOwnership(int playerID) { - for (int fromPlayer = 1; fromPlayer < 9; fromPlayer++) { + for (int fromPlayer = 1; fromPlayer < 9; ++fromPlayer) { if (fromPlayer != playerID) { MACRO_CALL_MEMBER(OpenSHC::Game::GameStateStructures_Func::changePlayerOwnership, this)( fromPlayer, playerID); diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 276239deb..7be1d6ec9 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -18035,7 +18035,7 @@ SHC_3BB0A8C1_0x0045B3A0 | 0.0% | Pending SHC_3BB0A8C1_0x0045B3E0 | 0.0% | Pending -SHC_3BB0A8C1_0x0045B460 | 0.0% | Pending +SHC_3BB0A8C1_0x0045B460 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0045B4A0 | 0.0% | Pending From a082a68dc828465f5c27bd43c2521d1f059ac224 Mon Sep 17 00:00:00 2001 From: Gynt Date: Thu, 24 Sep 2026 16:55:35 +0200 Subject: [PATCH 020/241] reimplement: SHC_3BB0A8C1_0x0044AA70 100.00% Reimplemented --- src/OpenSHC/Game/UpdateUnitValueLoss.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/OpenSHC/Game/UpdateUnitValueLoss.cpp b/src/OpenSHC/Game/UpdateUnitValueLoss.cpp index 306f1adc4..3a93a4d11 100644 --- a/src/OpenSHC/Game/UpdateUnitValueLoss.cpp +++ b/src/OpenSHC/Game/UpdateUnitValueLoss.cpp @@ -6,7 +6,7 @@ namespace Game { // FUNCTION: STRONGHOLDCRUSADER 0x0044aa70 void UpdateUnitValueLoss(int value) { - if (0 < value) { + if (value > 0) { DAT_CurrentPlayerUnitLosses::instance += value; } } From cfa58bf3cb1538a1048a9f5bcd8981e41b10aa9b Mon Sep 17 00:00:00 2001 From: Gynt Date: Thu, 24 Sep 2026 16:55:35 +0200 Subject: [PATCH 021/241] reimplement: SHC_3BB0A8C1_0x004188C0 100.00% Reimplemented --- src/OpenSHC/Map/Buildings/UpdatePlacedSiegeTower.cpp | 8 ++++---- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/OpenSHC/Map/Buildings/UpdatePlacedSiegeTower.cpp b/src/OpenSHC/Map/Buildings/UpdatePlacedSiegeTower.cpp index db633589f..180c32313 100644 --- a/src/OpenSHC/Map/Buildings/UpdatePlacedSiegeTower.cpp +++ b/src/OpenSHC/Map/Buildings/UpdatePlacedSiegeTower.cpp @@ -13,10 +13,10 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x004188C0 void Buildings::UpdatePlacedSiegeTower() { - int iVar1 = DAT_BuildingsState::instance.buildings[DAT_CurrentBuildingID::instance].unitRefID; - if ((iVar1 == 0) - || (DAT_BuildingsState::instance.buildings[DAT_CurrentBuildingID::instance].unitRefUID - != DAT_UnitsState::instance.units[iVar1].uid)) { + int const unitID = DAT_BuildingsState::instance.buildings[DAT_CurrentBuildingID::instance].unitRefID; + if (unitID == 0 + || DAT_BuildingsState::instance.buildings[DAT_CurrentBuildingID::instance].unitRefUID + != DAT_UnitsState::instance.units[unitID].uid) { DAT_BuildingsState::instance.buildings[DAT_CurrentBuildingID::instance].logicalState = OpenSHC::Map::Buildings::BLS_REMOVE; } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 7be1d6ec9..fdfc2da88 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -5561,7 +5561,7 @@ SHC_3BB0A8C1_0x00418740 | 0.0% | Pending SHC_3BB0A8C1_0x00418880 | 0.0% | Pending -SHC_3BB0A8C1_0x004188C0 | 0.0% | Pending +SHC_3BB0A8C1_0x004188C0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00418900 | 0.0% | Pending From 5fe52085a901a1591562359a73063d4d6c5c017e Mon Sep 17 00:00:00 2001 From: Gynt Date: Thu, 24 Sep 2026 16:55:36 +0200 Subject: [PATCH 022/241] reimplement: SHC_3BB0A8C1_0x004039F0 100.00% Reimplemented --- src/OpenSHC/Map/Entities/EntityState/deleteEntity.cpp | 2 +- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/Map/Entities/EntityState/deleteEntity.cpp b/src/OpenSHC/Map/Entities/EntityState/deleteEntity.cpp index af2a57c29..cd5f32d59 100644 --- a/src/OpenSHC/Map/Entities/EntityState/deleteEntity.cpp +++ b/src/OpenSHC/Map/Entities/EntityState/deleteEntity.cpp @@ -14,7 +14,7 @@ namespace Map { MACRO_CALL_MEMBER(OpenSHC::Map::Entities::EntityState_Func::doSomethingWithOtherEntitiesOnTile, this)( entityID); MACRO_CALL_MEMBER(OpenSHC::IO::LowLevelMemory_Func::fillMemory_ByteValue, DAT_LowLevelMemory::ptr)( - sizeof(Entity), 0, (void*)&this->entityArray[entityID]); + sizeof(Entity), 0, &this->entityArray[entityID]); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index fdfc2da88..81151901c 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -541,7 +541,7 @@ SHC_3BB0A8C1_0x00403980 | 0.0% | Pending SHC_3BB0A8C1_0x004039B0 | 0.0% | Pending -SHC_3BB0A8C1_0x004039F0 | 0.0% | Pending +SHC_3BB0A8C1_0x004039F0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00403A20 | 0.0% | Pending From 075c58cb091af0a9db1730deeedd0569ba371bbe Mon Sep 17 00:00:00 2001 From: Gynt Date: Thu, 24 Sep 2026 16:55:36 +0200 Subject: [PATCH 023/241] reimplement: SHC_3BB0A8C1_0x00401B60 100.00% Reimplemented --- .../Map/Entities/EntityState/destroyEntitiesPart2.cpp | 8 ++++---- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/OpenSHC/Map/Entities/EntityState/destroyEntitiesPart2.cpp b/src/OpenSHC/Map/Entities/EntityState/destroyEntitiesPart2.cpp index ff14fd34b..3d2d332fa 100644 --- a/src/OpenSHC/Map/Entities/EntityState/destroyEntitiesPart2.cpp +++ b/src/OpenSHC/Map/Entities/EntityState/destroyEntitiesPart2.cpp @@ -5,11 +5,11 @@ namespace Map { namespace Entities { // FUNCTION: STRONGHOLDCRUSADER 0x00401B60 - void EntityState::destroyEntitiesPart2(int param_1) + void EntityState::destroyEntitiesPart2(int playerID) { - for (int iVar1 = 1; iVar1 < 3000; iVar1++) { - if ((this->entityArray[iVar1].logicalState == 2) && (this->entityArray[iVar1].owner == param_1)) { - this->entityArray[iVar1].logicalState = 3; + for (int entityID = 1; entityID < 3000; ++entityID) { + if (this->entityArray[entityID].logicalState == 2 && this->entityArray[entityID].owner == playerID) { + this->entityArray[entityID].logicalState = 3; } } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 81151901c..926abecca 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -449,7 +449,7 @@ SHC_3BB0A8C1_0x00401AE0 | 0.0% | Pending SHC_3BB0A8C1_0x00401B20 | 0.0% | Pending -SHC_3BB0A8C1_0x00401B60 | 0.0% | Pending +SHC_3BB0A8C1_0x00401B60 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00401BA0 | 0.0% | Pending From 539b982948fd3aaea63b570a8d5b3ed5a9fd6ad9 Mon Sep 17 00:00:00 2001 From: Gynt Date: Thu, 24 Sep 2026 16:55:36 +0200 Subject: [PATCH 024/241] reimplement: SHC_3BB0A8C1_0x00401540 100.00% Reimplemented --- .../Map/Entities/EntityState/getFireEntityIDAtTile.cpp | 10 +++++----- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/OpenSHC/Map/Entities/EntityState/getFireEntityIDAtTile.cpp b/src/OpenSHC/Map/Entities/EntityState/getFireEntityIDAtTile.cpp index b0f274e7d..689d70f86 100644 --- a/src/OpenSHC/Map/Entities/EntityState/getFireEntityIDAtTile.cpp +++ b/src/OpenSHC/Map/Entities/EntityState/getFireEntityIDAtTile.cpp @@ -13,11 +13,11 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x00401540 int EntityState::getFireEntityIDAtTile(int tile) { - int _current = DAT_TileMapState::instance.EntityLayer[tile]; - while (_current != 0) { - if (this->entityArray[_current].entityType == OpenSHC::Map::Entities::ET_FIRE) - return _current; - _current = this->entityArray[_current].nextEntityOnThisTileByID; + for (int entityID = DAT_TileMapState::instance.EntityLayer[tile]; entityID != 0; + entityID = this->entityArray[entityID].nextEntityOnThisTileByID) { + if (this->entityArray[entityID].entityType == OpenSHC::Map::Entities::ET_FIRE) { + return entityID; + } } return 0; } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 926abecca..26fb5d8b2 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -421,7 +421,7 @@ SHC_3BB0A8C1_0x00401430 | 0.0% | Pending SHC_3BB0A8C1_0x00401460 | 0.0% | Pending -SHC_3BB0A8C1_0x00401540 | 0.0% | Pending +SHC_3BB0A8C1_0x00401540 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00401570 | 0.0% | Pending From bb85ba240e16fbd2f85a8a42d8fba2c31877c2a7 Mon Sep 17 00:00:00 2001 From: Gynt Date: Thu, 24 Sep 2026 16:55:37 +0200 Subject: [PATCH 025/241] reimplement: SHC_3BB0A8C1_0x00401400 100.00% Reimplemented --- .../Map/Entities/EntityState/markEntityDestroyed.cpp | 8 ++++---- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/OpenSHC/Map/Entities/EntityState/markEntityDestroyed.cpp b/src/OpenSHC/Map/Entities/EntityState/markEntityDestroyed.cpp index dc3e24326..d5deeb7cf 100644 --- a/src/OpenSHC/Map/Entities/EntityState/markEntityDestroyed.cpp +++ b/src/OpenSHC/Map/Entities/EntityState/markEntityDestroyed.cpp @@ -5,11 +5,11 @@ namespace Map { namespace Entities { // FUNCTION: STRONGHOLDCRUSADER 0x00401400 - void EntityState::markEntityDestroyed(int param_1) + void EntityState::markEntityDestroyed(int entityID) { - if (0 < param_1) { - this->entityArray[param_1].logicalState = 3; - this->entityArray[param_1].someCounter_OR_hitGround = 10; + if (entityID > 0) { + this->entityArray[entityID].logicalState = 3; + this->entityArray[entityID].someCounter_OR_hitGround = 10; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 26fb5d8b2..0beb8e8a1 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -415,7 +415,7 @@ SHC_3BB0A8C1_0x004012F0 | 0.0% | Pending SHC_3BB0A8C1_0x00401380 | 0.0% | Pending -SHC_3BB0A8C1_0x00401400 | 0.0% | Pending +SHC_3BB0A8C1_0x00401400 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00401430 | 0.0% | Pending From a7379e033f886a63945b2d37dbf234e3ae97a7d5 Mon Sep 17 00:00:00 2001 From: Gynt Date: Thu, 24 Sep 2026 16:55:37 +0200 Subject: [PATCH 026/241] reimplement: SHC_3BB0A8C1_0x00401AE0 100.00% Reimplemented --- .../Map/Entities/EntityState/reassignEntitiesOwner.cpp | 9 +++++---- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/OpenSHC/Map/Entities/EntityState/reassignEntitiesOwner.cpp b/src/OpenSHC/Map/Entities/EntityState/reassignEntitiesOwner.cpp index b2a5e3ced..71a8eed13 100644 --- a/src/OpenSHC/Map/Entities/EntityState/reassignEntitiesOwner.cpp +++ b/src/OpenSHC/Map/Entities/EntityState/reassignEntitiesOwner.cpp @@ -5,11 +5,12 @@ namespace Map { namespace Entities { // FUNCTION: STRONGHOLDCRUSADER 0x00401AE0 - void EntityState::reassignEntitiesOwner(int param_1, undefined4 param_2) + void EntityState::reassignEntitiesOwner(int fromPlayerID, undefined4 toPlayerID) { - for (int index = 1; index < 3000; index++) { - if ((this->entityArray[index].logicalState == 2) && (this->entityArray[index].owner == param_1)) { - this->entityArray[index].owner = param_2; + for (int entityID = 1; entityID < 3000; ++entityID) { + if (this->entityArray[entityID].logicalState == 2 + && this->entityArray[entityID].owner == fromPlayerID) { + this->entityArray[entityID].owner = toPlayerID; } } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 0beb8e8a1..b4249982f 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -445,7 +445,7 @@ SHC_3BB0A8C1_0x004019D0 | 0.0% | Pending SHC_3BB0A8C1_0x00401A50 | 0.0% | Pending -SHC_3BB0A8C1_0x00401AE0 | 0.0% | Pending +SHC_3BB0A8C1_0x00401AE0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00401B20 | 0.0% | Pending From fbb8d9d0e7a6583988c7ef0037c953f1eda72994 Mon Sep 17 00:00:00 2001 From: Gynt Date: Thu, 24 Sep 2026 16:55:37 +0200 Subject: [PATCH 027/241] reimplement: SHC_3BB0A8C1_0x00401430 100.00% Reimplemented --- .../Map/Entities/EntityState/tickEntityDecayCounter.cpp | 9 ++++----- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/OpenSHC/Map/Entities/EntityState/tickEntityDecayCounter.cpp b/src/OpenSHC/Map/Entities/EntityState/tickEntityDecayCounter.cpp index 883d41da4..cbf35f6ba 100644 --- a/src/OpenSHC/Map/Entities/EntityState/tickEntityDecayCounter.cpp +++ b/src/OpenSHC/Map/Entities/EntityState/tickEntityDecayCounter.cpp @@ -5,14 +5,13 @@ namespace Map { namespace Entities { // FUNCTION: STRONGHOLDCRUSADER 0x00401430 - void EntityState::tickEntityDecayCounter(int param_1) + void EntityState::tickEntityDecayCounter(int entityID) { - short sVar1 = this->entityArray[param_1].unkMinusOne; - if (0x1f <= sVar1) { - this->entityArray[param_1].logicalState = 3; + if (this->entityArray[entityID].unkMinusOne >= 31) { + this->entityArray[entityID].logicalState = 3; return; } - this->entityArray[param_1].unkMinusOne = sVar1 + 1; + this->entityArray[entityID].unkMinusOne += 1; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index b4249982f..7e3f9d816 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -417,7 +417,7 @@ SHC_3BB0A8C1_0x00401380 | 0.0% | Pending SHC_3BB0A8C1_0x00401400 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00401430 | 0.0% | Pending +SHC_3BB0A8C1_0x00401430 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00401460 | 0.0% | Pending From b8e8a65cecc68ea68fe63387bf128259232528bf Mon Sep 17 00:00:00 2001 From: Gynt Date: Thu, 24 Sep 2026 16:55:38 +0200 Subject: [PATCH 028/241] reimplement: SHC_3BB0A8C1_0x004F2A10 100.00% Reimplemented --- src/OpenSHC/Map/LandscapeState/getRandomRockImageOffset.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/Map/LandscapeState/getRandomRockImageOffset.cpp b/src/OpenSHC/Map/LandscapeState/getRandomRockImageOffset.cpp index e223377e6..0de5302e0 100644 --- a/src/OpenSHC/Map/LandscapeState/getRandomRockImageOffset.cpp +++ b/src/OpenSHC/Map/LandscapeState/getRandomRockImageOffset.cpp @@ -6,9 +6,9 @@ namespace OpenSHC { namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x004F2A10 - int LandscapeState::getRandomRockImageOffset(int param_1) + int LandscapeState::getRandomRockImageOffset(int index) { - return DAT_OrganismDefinedData::instance.RandomRockImageGMImageOffsets[param_1]; + return DAT_OrganismDefinedData::instance.RandomRockImageGMImageOffsets[index]; } } From f1e65d313481eecc79165eaba2274f319eee52e2 Mon Sep 17 00:00:00 2001 From: Gynt Date: Thu, 24 Sep 2026 16:55:38 +0200 Subject: [PATCH 029/241] reimplement: SHC_3BB0A8C1_0x004F2FE0 100.00% Reimplemented --- src/OpenSHC/Map/LandscapeState/isTreeAdult.cpp | 2 +- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/Map/LandscapeState/isTreeAdult.cpp b/src/OpenSHC/Map/LandscapeState/isTreeAdult.cpp index fb765ba1f..31d161784 100644 --- a/src/OpenSHC/Map/LandscapeState/isTreeAdult.cpp +++ b/src/OpenSHC/Map/LandscapeState/isTreeAdult.cpp @@ -12,7 +12,7 @@ namespace Map { if (this->trees[treeID].uid != treeUID) { return FALSE; } - return 0 < (short)this->trees[treeID].treeAdultHoodStageRelatedVisual3; + return (short)this->trees[treeID].treeAdultHoodStageRelatedVisual3 > 0; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 7e3f9d816..5054d90a1 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -38563,7 +38563,7 @@ SHC_3BB0A8C1_0x004F2E90 | 0.0% | Pending SHC_3BB0A8C1_0x004F2FB0 | 0.0% | Pending -SHC_3BB0A8C1_0x004F2FE0 | 0.0% | Pending +SHC_3BB0A8C1_0x004F2FE0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004F3010 | 0.0% | Pending From 358642b28279952dca0ef62f833110e0595b9742 Mon Sep 17 00:00:00 2001 From: Gynt Date: Thu, 24 Sep 2026 16:55:38 +0200 Subject: [PATCH 030/241] reimplement: SHC_3BB0A8C1_0x004F3D30 100.00% Reimplemented --- .../Map/LandscapeState/upgradeTreesAndRocksForMapVersion.cpp | 2 +- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/Map/LandscapeState/upgradeTreesAndRocksForMapVersion.cpp b/src/OpenSHC/Map/LandscapeState/upgradeTreesAndRocksForMapVersion.cpp index c041bcb9d..079764c01 100644 --- a/src/OpenSHC/Map/LandscapeState/upgradeTreesAndRocksForMapVersion.cpp +++ b/src/OpenSHC/Map/LandscapeState/upgradeTreesAndRocksForMapVersion.cpp @@ -14,7 +14,7 @@ namespace Map { MACRO_CALL(OpenSHC::Map::Version_Func::UpdateTreesOfCertainTypes)(); MACRO_CALL(OpenSHC::Map::Version_Func::UpdateFixTrees2)(); MACRO_CALL(OpenSHC::Map::Version_Func::UpgradeRemoveCertainRockTypesUnk)(); - if ((receivedMapVersion != packagerMapVersion) && ((int)receivedMapVersion < 0xa5)) { + if (receivedMapVersion != packagerMapVersion && (int)receivedMapVersion < 165) { MACRO_CALL(OpenSHC::Map::Version_Func::UpgradeRemoveRocksBeyond1000)(); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 5054d90a1..3bd3070dc 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -38599,7 +38599,7 @@ SHC_3BB0A8C1_0x004F3B90 | 0.0% | Pending SHC_3BB0A8C1_0x004F3C50 | 0.0% | Pending -SHC_3BB0A8C1_0x004F3D30 | 0.0% | Pending +SHC_3BB0A8C1_0x004F3D30 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004F3D60 | 0.0% | Pending From 9f88e00f093af9ccfb45ce1385702df14a1986e6 Mon Sep 17 00:00:00 2001 From: Gynt Date: Thu, 24 Sep 2026 16:55:39 +0200 Subject: [PATCH 031/241] reimplement: SHC_3BB0A8C1_0x004B77E0 100.00% Reimplemented --- .../Map/MapPropertiesState/isValueInRangeOneToTwenty.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/OpenSHC/Map/MapPropertiesState/isValueInRangeOneToTwenty.cpp b/src/OpenSHC/Map/MapPropertiesState/isValueInRangeOneToTwenty.cpp index f27b663ac..65774e04e 100644 --- a/src/OpenSHC/Map/MapPropertiesState/isValueInRangeOneToTwenty.cpp +++ b/src/OpenSHC/Map/MapPropertiesState/isValueInRangeOneToTwenty.cpp @@ -7,7 +7,7 @@ namespace Map { using OpenSHC::WindowsHelper::Enums::BOOLEnum; // FUNCTION: STRONGHOLDCRUSADER 0x004B77E0 - BOOLEnum MapPropertiesState::isValueInRangeOneToTwenty(int param_1) { return param_1 + -1 < 20; } + BOOLEnum MapPropertiesState::isValueInRangeOneToTwenty(int value) { return value - 1 < 20; } } } From 6c8cfc5202cc86cafa5f7a3128b5a660f262ad5a Mon Sep 17 00:00:00 2001 From: Gynt Date: Thu, 24 Sep 2026 16:55:39 +0200 Subject: [PATCH 032/241] reimplement: SHC_3BB0A8C1_0x004B7890 100.00% Reimplemented --- src/OpenSHC/Map/MapPropertiesState/mapHasCertainEvent.cpp | 3 ++- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/Map/MapPropertiesState/mapHasCertainEvent.cpp b/src/OpenSHC/Map/MapPropertiesState/mapHasCertainEvent.cpp index af141c670..72ce8fc62 100644 --- a/src/OpenSHC/Map/MapPropertiesState/mapHasCertainEvent.cpp +++ b/src/OpenSHC/Map/MapPropertiesState/mapHasCertainEvent.cpp @@ -10,7 +10,8 @@ namespace Map { BOOLEnum MapPropertiesState::mapHasCertainEvent() { for (int i = 0; i < this->eventsCount; ++i) { - if (this->scenarioEvents[i].header.tl_type == 1) { + switch (this->scenarioEvents[i].header.tl_type) { + case 1: return TRUE; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 3bd3070dc..79b005a26 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -27081,7 +27081,7 @@ SHC_3BB0A8C1_0x004B77E0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004B7800 | 0.0% | Pending -SHC_3BB0A8C1_0x004B7890 | 0.0% | Pending +SHC_3BB0A8C1_0x004B7890 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004B78D0 | 0.0% | Pending From 63f39ab4ba3223589acd370448e3a4ab8c1186be Mon Sep 17 00:00:00 2001 From: Gynt Date: Thu, 24 Sep 2026 16:55:39 +0200 Subject: [PATCH 033/241] reimplement: SHC_3BB0A8C1_0x004BB9F0 100.00% Reimplemented --- src/OpenSHC/Map/MapPropertiesState/openEventTriggerMenu.cpp | 3 ++- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/Map/MapPropertiesState/openEventTriggerMenu.cpp b/src/OpenSHC/Map/MapPropertiesState/openEventTriggerMenu.cpp index 342e014b7..3b9d64631 100644 --- a/src/OpenSHC/Map/MapPropertiesState/openEventTriggerMenu.cpp +++ b/src/OpenSHC/Map/MapPropertiesState/openEventTriggerMenu.cpp @@ -4,6 +4,7 @@ #include "OpenSHC/Game/ScenarioEvents/InGameEventUnionVersion.hpp" #include "OpenSHC/UI/Enums/MenuModalType.hpp" +#include "OpenSHC/Globals/DAT_MapPropertiesState.hpp" #include "OpenSHC/Globals/DAT_MenuTextInputState.hpp" namespace OpenSHC { @@ -17,7 +18,7 @@ namespace Map { { this->eventType = eventType; MACRO_CALL_MEMBER(OpenSHC::Game::ScenarioEvents::InGameEventUnionVersion_Func::resetEvent, - (InGameEventUnionVersion*)&this->invasionEvent)(); + (InGameEventUnionVersion*)&DAT_MapPropertiesState::instance.invasionEvent)(); MACRO_CALL_MEMBER(OpenSHC::UI::MenuTextInputState_Func::activateModalDialogAndClearText, DAT_MenuTextInputState::ptr)(OpenSHC::UI::Enums::MMT_TRIGGER_EVENT_OR_INVASION); } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 79b005a26..ea506110c 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -29315,7 +29315,7 @@ SHC_3BB0A8C1_0x004BB900 | 0.0% | Pending SHC_3BB0A8C1_0x004BB990 | 0.0% | Pending -SHC_3BB0A8C1_0x004BB9F0 | 0.0% | Pending +SHC_3BB0A8C1_0x004BB9F0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004BBA20 | 0.0% | Pending From 813a6dde79e6609981fe2aa2bbd96beb6cd8875f Mon Sep 17 00:00:00 2001 From: Gynt Date: Thu, 24 Sep 2026 16:55:40 +0200 Subject: [PATCH 034/241] reimplement: SHC_3BB0A8C1_0x004BBA20 100.00% Reimplemented --- .../Map/MapPropertiesState/sumInvasionEventUnitCount.cpp | 9 ++++++--- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/OpenSHC/Map/MapPropertiesState/sumInvasionEventUnitCount.cpp b/src/OpenSHC/Map/MapPropertiesState/sumInvasionEventUnitCount.cpp index 7f2f1728d..f9be50466 100644 --- a/src/OpenSHC/Map/MapPropertiesState/sumInvasionEventUnitCount.cpp +++ b/src/OpenSHC/Map/MapPropertiesState/sumInvasionEventUnitCount.cpp @@ -1,16 +1,19 @@ #include "OpenSHC/Map/MapPropertiesState.func.hpp" +#include "OpenSHC/Globals/DAT_MapPropertiesState.hpp" + namespace OpenSHC { namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x004BBA20 int MapPropertiesState::sumInvasionEventUnitCount() { - this->DAT_InvasionEventItemUnitCountSum = 0; + int sum = 0; for (int i = 0; i < 25; ++i) { - this->DAT_InvasionEventItemUnitCountSum += this->invasionEventContent.unitCountsPerUnitType[i]; + sum += DAT_MapPropertiesState::instance.invasionEventContent.unitCountsPerUnitType[i]; } - return this->DAT_InvasionEventItemUnitCountSum; + this->DAT_InvasionEventItemUnitCountSum = sum; + return sum; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index ea506110c..55d48dbc1 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -29317,7 +29317,7 @@ SHC_3BB0A8C1_0x004BB990 | 0.0% | Pending SHC_3BB0A8C1_0x004BB9F0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004BBA20 | 0.0% | Pending +SHC_3BB0A8C1_0x004BBA20 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004BBA30 | 0.0% | Pending From f9c1801c8a858d9833c64cb049eccd7c4b33c994 Mon Sep 17 00:00:00 2001 From: Gynt Date: Thu, 24 Sep 2026 16:55:40 +0200 Subject: [PATCH 035/241] reimplement: SHC_3BB0A8C1_0x004092C0 100.00% Reimplemented --- .../DirectionAlgorithmState/computeHealthPercentage.cpp | 6 +++--- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/OpenSHC/Map/Navigation/DirectionAlgorithmState/computeHealthPercentage.cpp b/src/OpenSHC/Map/Navigation/DirectionAlgorithmState/computeHealthPercentage.cpp index 62f5b13e0..bec1da57d 100644 --- a/src/OpenSHC/Map/Navigation/DirectionAlgorithmState/computeHealthPercentage.cpp +++ b/src/OpenSHC/Map/Navigation/DirectionAlgorithmState/computeHealthPercentage.cpp @@ -5,12 +5,12 @@ namespace Map { namespace Navigation { // FUNCTION: STRONGHOLDCRUSADER 0x004092C0 - int DirectionAlgorithmState::computeHealthPercentage(int param_1, int param_2) + int DirectionAlgorithmState::computeHealthPercentage(int health, int maxHealth) { - if (param_2 == 0) { + if (maxHealth == 0) { return 100; } - return (param_1 * 100) / param_2; + return (health * 100) / maxHealth; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 55d48dbc1..2001054c6 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -2597,7 +2597,7 @@ SHC_3BB0A8C1_0x00409200 | 0.0% | Pending SHC_3BB0A8C1_0x004092B0 | 0.0% | Pending -SHC_3BB0A8C1_0x004092C0 | 0.0% | Pending +SHC_3BB0A8C1_0x004092C0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004092E0 | 100.0% | Reimplemented From 89dfdfdfb4ddc06cb37cc7f0dbb3b1d084176535 Mon Sep 17 00:00:00 2001 From: Gynt Date: Thu, 24 Sep 2026 16:55:41 +0200 Subject: [PATCH 036/241] reimplement: SHC_3BB0A8C1_0x004A94E0 100.00% Reimplemented --- .../Map/Navigation/PathFindingState/clearAllClimbData.cpp | 4 ++-- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/OpenSHC/Map/Navigation/PathFindingState/clearAllClimbData.cpp b/src/OpenSHC/Map/Navigation/PathFindingState/clearAllClimbData.cpp index 29a8fb674..80fbfda87 100644 --- a/src/OpenSHC/Map/Navigation/PathFindingState/clearAllClimbData.cpp +++ b/src/OpenSHC/Map/Navigation/PathFindingState/clearAllClimbData.cpp @@ -8,8 +8,8 @@ namespace Map { void PathFindingState::clearAllClimbData() { this->numberOfClimbTeleports = 0; - for (int iVar1 = 0; iVar1 < 200; iVar1++) { - MACRO_CALL_MEMBER(OpenSHC::Map::Navigation::PathFindingState_Func::clearClimbData, this)(iVar1); + for (int climbID = 0; climbID < 200; ++climbID) { + MACRO_CALL_MEMBER(OpenSHC::Map::Navigation::PathFindingState_Func::clearClimbData, this)(climbID); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 2001054c6..081de9f1d 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -25455,7 +25455,7 @@ SHC_3BB0A8C1_0x004A91F7 | 0.0% | Pending SHC_3BB0A8C1_0x004A9200 | 0.0% | Pending -SHC_3BB0A8C1_0x004A94E0 | 0.0% | Pending +SHC_3BB0A8C1_0x004A94E0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004A9510 | 0.0% | Pending From 42b707fb52dffe1fc8d1dbe21cf446fbf969abca Mon Sep 17 00:00:00 2001 From: Gynt Date: Thu, 24 Sep 2026 16:55:41 +0200 Subject: [PATCH 037/241] reimplement: SHC_3BB0A8C1_0x004A4B80 100.00% Reimplemented --- .../Map/Navigation/PathFindingState/clearClimbData.cpp | 4 ++-- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/OpenSHC/Map/Navigation/PathFindingState/clearClimbData.cpp b/src/OpenSHC/Map/Navigation/PathFindingState/clearClimbData.cpp index 5d537d9db..693e80c9d 100644 --- a/src/OpenSHC/Map/Navigation/PathFindingState/clearClimbData.cpp +++ b/src/OpenSHC/Map/Navigation/PathFindingState/clearClimbData.cpp @@ -8,10 +8,10 @@ namespace Map { namespace Navigation { // FUNCTION: STRONGHOLDCRUSADER 0x004A4B80 - void PathFindingState::clearClimbData(int param_1) + void PathFindingState::clearClimbData(int climbID) { MACRO_CALL_MEMBER(OpenSHC::IO::LowLevelMemory_Func::fillMemory_ByteValue, DAT_LowLevelMemory::ptr)( - 0x204, 0, &this->climbData[param_1]); + sizeof(this->climbData[climbID]), 0, &this->climbData[climbID]); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 081de9f1d..70d516d60 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -25233,7 +25233,7 @@ SHC_3BB0A8C1_0x004A4930 | 0.0% | Pending SHC_3BB0A8C1_0x004A4B30 | 0.0% | Pending -SHC_3BB0A8C1_0x004A4B80 | 0.0% | Pending +SHC_3BB0A8C1_0x004A4B80 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004A4BB0 | 0.0% | Pending From 11bbae6a49410548465dc1f1b040410647f256b7 Mon Sep 17 00:00:00 2001 From: Gynt Date: Thu, 24 Sep 2026 16:55:41 +0200 Subject: [PATCH 038/241] reimplement: SHC_3BB0A8C1_0x004A5F60 100.00% Reimplemented --- .../updatePathLinkageLayerForEachBuildingAtEachTile.cpp | 4 ++-- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/OpenSHC/Map/Navigation/PathFindingState/updatePathLinkageLayerForEachBuildingAtEachTile.cpp b/src/OpenSHC/Map/Navigation/PathFindingState/updatePathLinkageLayerForEachBuildingAtEachTile.cpp index 4004e28f7..4d656c28f 100644 --- a/src/OpenSHC/Map/Navigation/PathFindingState/updatePathLinkageLayerForEachBuildingAtEachTile.cpp +++ b/src/OpenSHC/Map/Navigation/PathFindingState/updatePathLinkageLayerForEachBuildingAtEachTile.cpp @@ -9,10 +9,10 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x004A5F60 void PathFindingState::updatePathLinkageLayerForEachBuildingAtEachTile() { - for (int _tileIndex = 0; _tileIndex < 80400; _tileIndex++) { + for (int tileIndex = 0; tileIndex < 80400; ++tileIndex) { MACRO_CALL_MEMBER( OpenSHC::Map::Navigation::PathFindingState_Func::updatePathLinkageLayerBasedOnBuildingsUnk, this)( - DAT_ViewportRenderState::instance.tileTranslationMatrix_YComponent[_tileIndex], _tileIndex); + DAT_ViewportRenderState::instance.tileTranslationMatrix_YComponent[tileIndex], tileIndex); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 70d516d60..1b71adcfa 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -25267,7 +25267,7 @@ SHC_3BB0A8C1_0x004A5B00 | 0.0% | Pending SHC_3BB0A8C1_0x004A5DA0 | 0.0% | Pending -SHC_3BB0A8C1_0x004A5F60 | 0.0% | Pending +SHC_3BB0A8C1_0x004A5F60 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004A5F90 | 0.0% | Pending From 44272d9f664c28111d871191494adbcb7331d7a4 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:26 +0200 Subject: [PATCH 039/241] reimplement: SHC_3BB0A8C1_0x005002D0 100.00% Reimplemented --- src/OpenSHC/Map/TileMapState/clearMoatData.cpp | 2 +- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/Map/TileMapState/clearMoatData.cpp b/src/OpenSHC/Map/TileMapState/clearMoatData.cpp index 464b61401..b98790b2e 100644 --- a/src/OpenSHC/Map/TileMapState/clearMoatData.cpp +++ b/src/OpenSHC/Map/TileMapState/clearMoatData.cpp @@ -13,7 +13,7 @@ namespace Map { return; } MACRO_CALL_MEMBER(OpenSHC::IO::LowLevelMemory_Func::fillMemory_ByteValue, DAT_LowLevelMemory::ptr)( - 0x10, 0, &this->moats[moatID]); + sizeof(this->moats[moatID]), 0, &this->moats[moatID]); this->moatTileCount -= 1; } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 1b71adcfa..f83b58bcf 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -41431,7 +41431,7 @@ SHC_3BB0A8C1_0x00500250 | 0.0% | Pending SHC_3BB0A8C1_0x00500290 | 0.0% | Pending -SHC_3BB0A8C1_0x005002D0 | 0.0% | Pending +SHC_3BB0A8C1_0x005002D0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00500310 | 0.0% | Pending From 5563ae18722ccf99b205b1f7caf89542690ff472 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:26 +0200 Subject: [PATCH 040/241] reimplement: SHC_3BB0A8C1_0x00500210 100.00% Reimplemented --- src/OpenSHC/Map/TileMapState/getUnownedMoatCount.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/OpenSHC/Map/TileMapState/getUnownedMoatCount.cpp b/src/OpenSHC/Map/TileMapState/getUnownedMoatCount.cpp index 352e8297a..ffc44e507 100644 --- a/src/OpenSHC/Map/TileMapState/getUnownedMoatCount.cpp +++ b/src/OpenSHC/Map/TileMapState/getUnownedMoatCount.cpp @@ -7,13 +7,11 @@ namespace Map { int TileMapState::getUnownedMoatCount() { int unownedMoatCount = 0; - - for (int i = 1; i < 16000; i++) { + for (int i = 1; i < 16000; ++i) { if (this->moats[i].owner == 0) { unownedMoatCount += 1; } } - return unownedMoatCount; } From 7371cbdafa04616fa5e0f4085241ffdc8aaa955c Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:26 +0200 Subject: [PATCH 041/241] reimplement: SHC_3BB0A8C1_0x00512920 100.00% Reimplemented --- src/OpenSHC/Map/TileMapState/processMapOrientationChange.cpp | 2 +- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/Map/TileMapState/processMapOrientationChange.cpp b/src/OpenSHC/Map/TileMapState/processMapOrientationChange.cpp index c7d16dd48..3c4450873 100644 --- a/src/OpenSHC/Map/TileMapState/processMapOrientationChange.cpp +++ b/src/OpenSHC/Map/TileMapState/processMapOrientationChange.cpp @@ -6,7 +6,7 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x00512920 void TileMapState::processMapOrientationChange() { - if (this->DAT_FutureMapOrientation < 8) { + if ((int)this->DAT_FutureMapOrientation < 8) { MACRO_CALL_MEMBER(OpenSHC::Map::TileMapState_Func::changeMapOrientation, this)( this->DAT_FutureMapOrientation); this->DAT_FutureMapOrientation = 8; diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index f83b58bcf..4c6ebb4d1 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -44739,7 +44739,7 @@ SHC_3BB0A8C1_0x005127B0 | 0.0% | Pending SHC_3BB0A8C1_0x005127D0 | 0.0% | Pending -SHC_3BB0A8C1_0x00512920 | 0.0% | Pending +SHC_3BB0A8C1_0x00512920 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00512940 | 0.0% | Pending From 6a92ddfd51e89e8dd28556b82e6dd5896628c7f5 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:27 +0200 Subject: [PATCH 042/241] reimplement: SHC_3BB0A8C1_0x005000A0 100.00% Reimplemented --- src/OpenSHC/Map/TileMapState/recountTotalOwnedMoats.cpp | 4 ++-- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/OpenSHC/Map/TileMapState/recountTotalOwnedMoats.cpp b/src/OpenSHC/Map/TileMapState/recountTotalOwnedMoats.cpp index 43472a4d1..a4bb5f1a7 100644 --- a/src/OpenSHC/Map/TileMapState/recountTotalOwnedMoats.cpp +++ b/src/OpenSHC/Map/TileMapState/recountTotalOwnedMoats.cpp @@ -7,9 +7,9 @@ namespace Map { void TileMapState::recountTotalOwnedMoats() { this->currentMoatCount = 0; - for (int i = 1; i < 16000; i++) { + for (int i = 1; i < 16000; ++i) { if (this->moats[i].owner != 0) { - // fixme: this must be wrong, but it is 100% Why not this->currentMoatCount += 1 ? + // not a count: one past the highest owned moat index, used as loop bound this->currentMoatCount = i + 1; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 4c6ebb4d1..dc665f083 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -41419,7 +41419,7 @@ SHC_3BB0A8C1_0x00500090 | 0.0% | Pending SHC_3BB0A8C1_0x00500091 | 0.0% | Pending -SHC_3BB0A8C1_0x005000A0 | 0.0% | Pending +SHC_3BB0A8C1_0x005000A0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x005000E0 | 0.0% | Pending From 094c80dbea49f6fb780ee7fbc91d6397a1eba5ac Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:27 +0200 Subject: [PATCH 043/241] reimplement: SHC_3BB0A8C1_0x00500680 100.00% Reimplemented --- src/OpenSHC/Map/TileMapState/resetMoatArray.cpp | 4 ++-- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/OpenSHC/Map/TileMapState/resetMoatArray.cpp b/src/OpenSHC/Map/TileMapState/resetMoatArray.cpp index 5e1aaa024..ee652655d 100644 --- a/src/OpenSHC/Map/TileMapState/resetMoatArray.cpp +++ b/src/OpenSHC/Map/TileMapState/resetMoatArray.cpp @@ -12,9 +12,9 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x00500680 void TileMapState::resetMoatArray() { - for (int i = 0; i < 16000; i++) { + for (int i = 0; i < 16000; ++i) { MACRO_CALL_MEMBER(OpenSHC::IO::LowLevelMemory_Func::fillMemory_ByteValue, DAT_LowLevelMemory::ptr)( - 0x10, 0, &this->moats[i]); + sizeof(this->moats[i]), 0, &this->moats[i]); } this->moatTileCount = 0; } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index dc665f083..856ceac0d 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -41445,7 +41445,7 @@ SHC_3BB0A8C1_0x005005F0 | 0.0% | Pending SHC_3BB0A8C1_0x00500640 | 0.0% | Pending -SHC_3BB0A8C1_0x00500680 | 0.0% | Pending +SHC_3BB0A8C1_0x00500680 | 100.0% | Reimplemented SHC_3BB0A8C1_0x005006C0 | 0.0% | Pending From 6d47a621ac414c5a44b332aa29599aeb241ad0d6 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:27 +0200 Subject: [PATCH 044/241] reimplement: SHC_3BB0A8C1_0x005007D0 100.00% Reimplemented --- src/OpenSHC/Map/TileMapState/resetPitchDitchArray.cpp | 4 ++-- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/OpenSHC/Map/TileMapState/resetPitchDitchArray.cpp b/src/OpenSHC/Map/TileMapState/resetPitchDitchArray.cpp index d2a39514d..c42ebcba0 100644 --- a/src/OpenSHC/Map/TileMapState/resetPitchDitchArray.cpp +++ b/src/OpenSHC/Map/TileMapState/resetPitchDitchArray.cpp @@ -13,9 +13,9 @@ namespace Map { void TileMapState::resetPitchDitchArray() { this->maxPitchDitchCount = 4000; - for (int i = 0; i < 4000; i++) { + for (int i = 0; i < 4000; ++i) { MACRO_CALL_MEMBER(OpenSHC::IO::LowLevelMemory_Func::fillMemory_ByteValue, DAT_LowLevelMemory::ptr)( - 0x14, 0, &this->pitchDitches[i]); + sizeof(this->pitchDitches[i]), 0, &this->pitchDitches[i]); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 856ceac0d..331267fc1 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -41455,7 +41455,7 @@ SHC_3BB0A8C1_0x00500750 | 0.0% | Pending SHC_3BB0A8C1_0x00500790 | 0.0% | Pending -SHC_3BB0A8C1_0x005007D0 | 0.0% | Pending +SHC_3BB0A8C1_0x005007D0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00500800 | 0.0% | Pending From c65ed296542e47b2ce35941eac26b5364357fce8 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:28 +0200 Subject: [PATCH 045/241] reimplement: SHC_3BB0A8C1_0x00500750 100.00% Reimplemented --- .../Map/TileMapState/setMoatOwnerForAllMatching.cpp | 8 ++++---- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/OpenSHC/Map/TileMapState/setMoatOwnerForAllMatching.cpp b/src/OpenSHC/Map/TileMapState/setMoatOwnerForAllMatching.cpp index 142f0f4e4..59310e878 100644 --- a/src/OpenSHC/Map/TileMapState/setMoatOwnerForAllMatching.cpp +++ b/src/OpenSHC/Map/TileMapState/setMoatOwnerForAllMatching.cpp @@ -4,11 +4,11 @@ namespace OpenSHC { namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x00500750 - void TileMapState::setMoatOwnerForAllMatching(int param_1, undefined4 param_2) + void TileMapState::setMoatOwnerForAllMatching(int fromPlayerID, undefined4 toPlayerID) { - for (int i = 1; i < 16000; i++) { - if (this->moats[i].owner != 0 && this->moats[i].owner == param_1) { - this->moats[i].owner = param_2; + for (int i = 1; i < 16000; ++i) { + if (this->moats[i].owner != 0 && this->moats[i].owner == fromPlayerID) { + this->moats[i].owner = toPlayerID; } } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 331267fc1..5e573ca37 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -41451,7 +41451,7 @@ SHC_3BB0A8C1_0x005006C0 | 0.0% | Pending SHC_3BB0A8C1_0x00500720 | 0.0% | Pending -SHC_3BB0A8C1_0x00500750 | 0.0% | Pending +SHC_3BB0A8C1_0x00500750 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00500790 | 0.0% | Pending From b5c04dbb95fb1e3db2a71a30173765d7328f5176 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:28 +0200 Subject: [PATCH 046/241] reimplement: SHC_3BB0A8C1_0x00500720 100.00% Reimplemented --- src/OpenSHC/Map/TileMapState/setMoatVisualStateAtTile.cpp | 6 +++--- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/OpenSHC/Map/TileMapState/setMoatVisualStateAtTile.cpp b/src/OpenSHC/Map/TileMapState/setMoatVisualStateAtTile.cpp index 87ca49d47..d69085c59 100644 --- a/src/OpenSHC/Map/TileMapState/setMoatVisualStateAtTile.cpp +++ b/src/OpenSHC/Map/TileMapState/setMoatVisualStateAtTile.cpp @@ -6,9 +6,9 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x00500720 void TileMapState::setMoatVisualStateAtTile(int tile, undefined4 zeroOrTwo) { - int iVar1 = MACRO_CALL_MEMBER(OpenSHC::Map::TileMapState_Func::returnOwnedMoatAtTile, this)(tile); - if (iVar1 != 0) { - this->moats[iVar1].zeroOrTwo = zeroOrTwo; + int const moatID = MACRO_CALL_MEMBER(OpenSHC::Map::TileMapState_Func::returnOwnedMoatAtTile, this)(tile); + if (moatID != 0) { + this->moats[moatID].zeroOrTwo = zeroOrTwo; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 5e573ca37..e15716b50 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -41449,7 +41449,7 @@ SHC_3BB0A8C1_0x00500680 | 100.0% | Reimplemented SHC_3BB0A8C1_0x005006C0 | 0.0% | Pending -SHC_3BB0A8C1_0x00500720 | 0.0% | Pending +SHC_3BB0A8C1_0x00500720 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00500750 | 100.0% | Reimplemented From cdc203eeb3019d3e4f67fffb637fd042a1a83677 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:28 +0200 Subject: [PATCH 047/241] reimplement: SHC_3BB0A8C1_0x00501180 100.00% Reimplemented --- src/OpenSHC/Map/TileMapState/spreadFlagPlacementAlgorithm.cpp | 4 ++-- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/OpenSHC/Map/TileMapState/spreadFlagPlacementAlgorithm.cpp b/src/OpenSHC/Map/TileMapState/spreadFlagPlacementAlgorithm.cpp index 5080c5500..ffaf4fc83 100644 --- a/src/OpenSHC/Map/TileMapState/spreadFlagPlacementAlgorithm.cpp +++ b/src/OpenSHC/Map/TileMapState/spreadFlagPlacementAlgorithm.cpp @@ -7,10 +7,10 @@ namespace OpenSHC { namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x00501180 - int TileMapState::spreadFlagPlacementAlgorithm(int param_1, uint param_2, uint param_3) + int TileMapState::spreadFlagPlacementAlgorithm(int playerID, uint x, uint y) { return MACRO_CALL_MEMBER(OpenSHC::Map::Navigation::PathFindingState_Func::spreadAlgorithmForFlagsAndBraziersUnk, - DAT_PathFindingState::ptr)(param_1, param_2, param_3, 4, 0); + DAT_PathFindingState::ptr)(playerID, x, y, 4, 0); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index e15716b50..6bd022a0f 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -41511,7 +41511,7 @@ SHC_3BB0A8C1_0x005010E0 | 0.0% | Pending SHC_3BB0A8C1_0x00501110 | 0.0% | Pending -SHC_3BB0A8C1_0x00501180 | 0.0% | Pending +SHC_3BB0A8C1_0x00501180 | 100.0% | Reimplemented SHC_3BB0A8C1_0x005011A0 | 0.0% | Pending From 898ceea9dabc39cbc21f66e9f6e80766b7468110 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:28 +0200 Subject: [PATCH 048/241] reimplement: SHC_3BB0A8C1_0x004F70B0 100.00% Reimplemented --- src/OpenSHC/Map/TileMapState/toggleFlatView.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/OpenSHC/Map/TileMapState/toggleFlatView.cpp b/src/OpenSHC/Map/TileMapState/toggleFlatView.cpp index becb26288..4edcf1b2b 100644 --- a/src/OpenSHC/Map/TileMapState/toggleFlatView.cpp +++ b/src/OpenSHC/Map/TileMapState/toggleFlatView.cpp @@ -4,11 +4,11 @@ namespace OpenSHC { namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x004F70B0 - void TileMapState::toggleFlatView(int param_1) + void TileMapState::toggleFlatView(int flatView) { - if (param_1 != this->flatViewToggleValue1) { - this->flatViewToggleValue1 = param_1; - this->flatViewToggleValue2 = param_1; + if (flatView != this->flatViewToggleValue1) { + this->flatViewToggleValue1 = flatView; + this->flatViewToggleValue2 = flatView; } } From 0bb78e21d7ed6e2b91c7d3e96ff8106edbeb2e9e Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:29 +0200 Subject: [PATCH 049/241] reimplement: SHC_3BB0A8C1_0x00504EE0 38.46% LTCG ecx reuse after call --- .../updateBuildingPlacementRotationPreview.cpp | 8 ++++---- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/OpenSHC/Map/TileMapState/updateBuildingPlacementRotationPreview.cpp b/src/OpenSHC/Map/TileMapState/updateBuildingPlacementRotationPreview.cpp index 922487ac7..d125f4f13 100644 --- a/src/OpenSHC/Map/TileMapState/updateBuildingPlacementRotationPreview.cpp +++ b/src/OpenSHC/Map/TileMapState/updateBuildingPlacementRotationPreview.cpp @@ -7,12 +7,12 @@ namespace Map { using OpenSHC::WindowsHelper::Enums::BOOLEnum; // FUNCTION: STRONGHOLDCRUSADER 0x00504EE0 - void TileMapState::updateBuildingPlacementRotationPreview(int param_1, int param_2) + void TileMapState::updateBuildingPlacementRotationPreview(int x, int y) { - BOOLEnum _previous = this->buildingPlacementFail; + BOOLEnum const previousPlacementFail = this->buildingPlacementFail; this->buildingPlacementFail = FALSE; - MACRO_CALL_MEMBER(OpenSHC::Map::TileMapState_Func::determineBuildingPlacementRotation, this)(param_1, param_2); - this->buildingPlacementFail = _previous; + MACRO_CALL_MEMBER(OpenSHC::Map::TileMapState_Func::determineBuildingPlacementRotation, this)(x, y); + this->buildingPlacementFail = previousPlacementFail; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 6bd022a0f..eaede1cc6 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -42067,7 +42067,7 @@ SHC_3BB0A8C1_0x00504ED0 | 0.0% | Pending SHC_3BB0A8C1_0x00504ED1 | 0.0% | Pending -SHC_3BB0A8C1_0x00504EE0 | 0.0% | Pending +SHC_3BB0A8C1_0x00504EE0 | 38.5% | LTCG ecx reuse after call SHC_3BB0A8C1_0x00504F10 | 0.0% | Pending From cbce8d9c9438dbfe085c0a71985d9a800ae1a8ba Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:29 +0200 Subject: [PATCH 050/241] reimplement: SHC_3BB0A8C1_0x00500640 46.15% LTCG ecx reuse after call --- src/OpenSHC/Map/TileMapState/updateMoatCountdownTimers.cpp | 2 +- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/Map/TileMapState/updateMoatCountdownTimers.cpp b/src/OpenSHC/Map/TileMapState/updateMoatCountdownTimers.cpp index 4934a62aa..d8f384ce1 100644 --- a/src/OpenSHC/Map/TileMapState/updateMoatCountdownTimers.cpp +++ b/src/OpenSHC/Map/TileMapState/updateMoatCountdownTimers.cpp @@ -10,7 +10,7 @@ namespace Map { void TileMapState::updateMoatCountdownTimers() { MACRO_CALL_MEMBER(OpenSHC::Map::TileMapState_Func::recountTotalOwnedMoats, this)(); - for (int i = 0; i < this->currentMoatCount; i++) { + for (int i = 0; i < this->currentMoatCount; ++i) { if (this->moats[i].owner != 0 && this->moats[i].someCountDown > 0) { this->moats[i].someCountDown -= 1; } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index eaede1cc6..d3f205684 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -41443,7 +41443,7 @@ SHC_3BB0A8C1_0x00500500 | 0.0% | Pending SHC_3BB0A8C1_0x005005F0 | 0.0% | Pending -SHC_3BB0A8C1_0x00500640 | 0.0% | Pending +SHC_3BB0A8C1_0x00500640 | 46.1% | LTCG ecx reuse after call SHC_3BB0A8C1_0x00500680 | 100.0% | Reimplemented From b003c7c37dfbf1a019b9cbdae906b33db4690a2e Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:29 +0200 Subject: [PATCH 051/241] reimplement: SHC_3BB0A8C1_0x004F28F0 100.00% Reimplemented --- src/OpenSHC/Map/Trees/UpdateTree16.cpp | 6 +++--- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/OpenSHC/Map/Trees/UpdateTree16.cpp b/src/OpenSHC/Map/Trees/UpdateTree16.cpp index 38fa7a941..8a2cf2c94 100644 --- a/src/OpenSHC/Map/Trees/UpdateTree16.cpp +++ b/src/OpenSHC/Map/Trees/UpdateTree16.cpp @@ -9,9 +9,9 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x004F28F0 void Trees::UpdateTree16() { - int iVar2 = (DAT_LandscapeState::instance.trees[DAT_CurrentTreeID::instance].rng1 & 7U) + 10; - DAT_LandscapeState::instance.trees[DAT_CurrentTreeID::instance].animationFrameUnk = iVar2; - DAT_LandscapeState::instance.trees[DAT_CurrentTreeID::instance].animationFrame2Unk = iVar2; + int const frame = (DAT_LandscapeState::instance.trees[DAT_CurrentTreeID::instance].rng1 & 7U) + 10; + DAT_LandscapeState::instance.trees[DAT_CurrentTreeID::instance].animationFrameUnk = frame; + DAT_LandscapeState::instance.trees[DAT_CurrentTreeID::instance].animationFrame2Unk = frame; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index d3f205684..8976788cb 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -38463,7 +38463,7 @@ SHC_3BB0A8C1_0x004F28E4 | 0.0% | Pending SHC_3BB0A8C1_0x004F28E8 | 0.0% | Pending -SHC_3BB0A8C1_0x004F28F0 | 0.0% | Pending +SHC_3BB0A8C1_0x004F28F0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004F2920 | 0.0% | Pending From 1469aa6d8b22693bfd0f7088e861d6265dc75690 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:30 +0200 Subject: [PATCH 052/241] reimplement: SHC_3BB0A8C1_0x00530D50 100.00% Reimplemented --- src/OpenSHC/Map/Units/CheckUnitProductionPaused.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/Map/Units/CheckUnitProductionPaused.cpp b/src/OpenSHC/Map/Units/CheckUnitProductionPaused.cpp index 5c1b88a53..531176444 100644 --- a/src/OpenSHC/Map/Units/CheckUnitProductionPaused.cpp +++ b/src/OpenSHC/Map/Units/CheckUnitProductionPaused.cpp @@ -9,9 +9,9 @@ namespace Map { using OpenSHC::WindowsHelper::Enums::BOOLEnum; // FUNCTION: STRONGHOLDCRUSADER 0x00530D50 - BOOLEnum Units::CheckUnitProductionPaused(int param_1) + BOOLEnum Units::CheckUnitProductionPaused(int unitID) { - return DAT_UnitsState::instance.units[param_1].field166_0x2fe == 1; + return DAT_UnitsState::instance.units[unitID].field166_0x2fe == 1; } } From e032bc9d95c2b908d8a468aa5eef06f8f5d41e1d Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:30 +0200 Subject: [PATCH 053/241] reimplement: SHC_3BB0A8C1_0x00522BC0 100.00% Reimplemented --- src/OpenSHC/Map/Units/TribesState/clearTribe.cpp | 4 ++-- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/OpenSHC/Map/Units/TribesState/clearTribe.cpp b/src/OpenSHC/Map/Units/TribesState/clearTribe.cpp index 5e77765c2..676d8b6ee 100644 --- a/src/OpenSHC/Map/Units/TribesState/clearTribe.cpp +++ b/src/OpenSHC/Map/Units/TribesState/clearTribe.cpp @@ -9,10 +9,10 @@ namespace Map { namespace Units { // FUNCTION: STRONGHOLDCRUSADER 0x00522BC0 - void TribesState::clearTribe(int param_1) + void TribesState::clearTribe(int tribeID) { MACRO_CALL_MEMBER(OpenSHC::IO::LowLevelMemory_Func::fillMemory_ByteValue, DAT_LowLevelMemory::ptr)( - 820, 0, &this->tribes[param_1]); + sizeof(this->tribes[tribeID]), 0, &this->tribes[tribeID]); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 8976788cb..2243c0a5d 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -46807,7 +46807,7 @@ SHC_3BB0A8C1_0x005229C0 | 0.0% | Pending SHC_3BB0A8C1_0x00522B00 | 0.0% | Pending -SHC_3BB0A8C1_0x00522BC0 | 0.0% | Pending +SHC_3BB0A8C1_0x00522BC0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00522BF0 | 0.0% | Pending From bfb71bd4abf42f9e9fec89ca03a855e8b8070c9a Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:30 +0200 Subject: [PATCH 054/241] reimplement: SHC_3BB0A8C1_0x00523730 100.00% Reimplemented --- src/OpenSHC/Map/Units/TribesState/markTribeAsAnimalTribe.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/OpenSHC/Map/Units/TribesState/markTribeAsAnimalTribe.cpp b/src/OpenSHC/Map/Units/TribesState/markTribeAsAnimalTribe.cpp index a2b2f16bf..28550b718 100644 --- a/src/OpenSHC/Map/Units/TribesState/markTribeAsAnimalTribe.cpp +++ b/src/OpenSHC/Map/Units/TribesState/markTribeAsAnimalTribe.cpp @@ -5,7 +5,7 @@ namespace Map { namespace Units { // FUNCTION: STRONGHOLDCRUSADER 0x00523730 - void TribesState::markTribeAsAnimalTribe(int param_1) { this->tribes[param_1].unkIsAnimalTribe = 1; } + void TribesState::markTribeAsAnimalTribe(int tribeID) { this->tribes[tribeID].unkIsAnimalTribe = 1; } } } From b1696ba412a87bb0aebd04e75f905b889ee433ef Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:31 +0200 Subject: [PATCH 055/241] reimplement: SHC_3BB0A8C1_0x00522110 100.00% Reimplemented --- .../Map/Units/TribesState/playPatrolCommandSpeech.cpp | 9 +++++---- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/OpenSHC/Map/Units/TribesState/playPatrolCommandSpeech.cpp b/src/OpenSHC/Map/Units/TribesState/playPatrolCommandSpeech.cpp index 1237f180b..a66d1a2d3 100644 --- a/src/OpenSHC/Map/Units/TribesState/playPatrolCommandSpeech.cpp +++ b/src/OpenSHC/Map/Units/TribesState/playPatrolCommandSpeech.cpp @@ -14,13 +14,14 @@ namespace Map { using OpenSHC::Map::Units::UnitType; // FUNCTION: STRONGHOLDCRUSADER 0x00522110 - void TribesState::playPatrolCommandSpeech(undefined4 param_1) + void TribesState::playPatrolCommandSpeech(undefined4 selectionID) { MACRO_CALL_MEMBER(OpenSHC::Map::Units::UnitsState_Func::selectionContainsCombatUnit, DAT_UnitsState::ptr)( 1); - UnitType unitType = MACRO_CALL_MEMBER( - OpenSHC::Map::Units::TribesState_Func::getMajoritySelectedUnitType, this)(param_1, (int*)¶m_1); - MACRO_CALL_MEMBER(OpenSHC::Audio::SFX::SFXState_Func::playUnitSpeech, DAT_SFXState::ptr)(unitType, 0x29); + MACRO_CALL_MEMBER(OpenSHC::Audio::SFX::SFXState_Func::playUnitSpeech, DAT_SFXState::ptr)( + MACRO_CALL_MEMBER(OpenSHC::Map::Units::TribesState_Func::getMajoritySelectedUnitType, this)( + selectionID, (int*)&selectionID), + 0x29); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 2243c0a5d..13666c768 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -46765,7 +46765,7 @@ SHC_3BB0A8C1_0x00522083 | 0.0% | Pending SHC_3BB0A8C1_0x00522090 | 0.0% | Pending -SHC_3BB0A8C1_0x00522110 | 0.0% | Pending +SHC_3BB0A8C1_0x00522110 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00522150 | 100.0% | Reimplemented From 50e4f87ccb72906b422b18dbc5fb9319e470798a Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:31 +0200 Subject: [PATCH 056/241] reimplement: SHC_3BB0A8C1_0x00521EB0 76.47% pop esi scheduling --- src/OpenSHC/Map/Units/TribesState/playUnitSelectSpeech.cpp | 7 ++++--- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/OpenSHC/Map/Units/TribesState/playUnitSelectSpeech.cpp b/src/OpenSHC/Map/Units/TribesState/playUnitSelectSpeech.cpp index b8be80471..cf755333e 100644 --- a/src/OpenSHC/Map/Units/TribesState/playUnitSelectSpeech.cpp +++ b/src/OpenSHC/Map/Units/TribesState/playUnitSelectSpeech.cpp @@ -14,12 +14,13 @@ namespace Map { using OpenSHC::Map::Units::UnitType; // FUNCTION: STRONGHOLDCRUSADER 0x00521EB0 - void TribesState::playUnitSelectSpeech(undefined4 param_1) + void TribesState::playUnitSelectSpeech(undefined4 selectionID) { MACRO_CALL_MEMBER(OpenSHC::Map::Units::UnitsState_Func::selectionContainsCombatUnit, DAT_UnitsState::ptr)( 1); - UnitType unitType = MACRO_CALL_MEMBER( - OpenSHC::Map::Units::TribesState_Func::getMajoritySelectedUnitType, this)(param_1, (int*)¶m_1); + UnitType const unitType + = MACRO_CALL_MEMBER(OpenSHC::Map::Units::TribesState_Func::getMajoritySelectedUnitType, this)( + selectionID, (int*)&selectionID); MACRO_CALL_MEMBER(OpenSHC::Audio::SFX::SFXState_Func::playUnitSpeech, DAT_SFXState::ptr)(unitType, 0xb); } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 13666c768..23e0d5646 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -46633,7 +46633,7 @@ SHC_3BB0A8C1_0x00521EA5 | 0.0% | Pending SHC_3BB0A8C1_0x00521EA6 | 0.0% | Pending -SHC_3BB0A8C1_0x00521EB0 | 0.0% | Pending +SHC_3BB0A8C1_0x00521EB0 | 76.5% | pop esi scheduling SHC_3BB0A8C1_0x00521EF0 | 0.0% | Pending From 4d385424f0aa748e5303cc75873742a2796a46a5 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:31 +0200 Subject: [PATCH 057/241] reimplement: SHC_3BB0A8C1_0x00522160 100.00% Reimplemented --- src/OpenSHC/Map/Units/TribesState/playWorkCommandSpeech.cpp | 4 ++-- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/OpenSHC/Map/Units/TribesState/playWorkCommandSpeech.cpp b/src/OpenSHC/Map/Units/TribesState/playWorkCommandSpeech.cpp index 4f833a0f5..372249e68 100644 --- a/src/OpenSHC/Map/Units/TribesState/playWorkCommandSpeech.cpp +++ b/src/OpenSHC/Map/Units/TribesState/playWorkCommandSpeech.cpp @@ -14,13 +14,13 @@ namespace Map { using OpenSHC::Map::Units::UnitType; // FUNCTION: STRONGHOLDCRUSADER 0x00522160 - void TribesState::playWorkCommandSpeech(undefined4 param_1) + void TribesState::playWorkCommandSpeech(undefined4 selectionID) { MACRO_CALL_MEMBER(OpenSHC::Map::Units::UnitsState_Func::selectionContainsCombatUnit, DAT_UnitsState::ptr)( 1); MACRO_CALL_MEMBER(OpenSHC::Audio::SFX::SFXState_Func::playUnitSpeech, DAT_SFXState::ptr)( MACRO_CALL_MEMBER(OpenSHC::Map::Units::TribesState_Func::getMajoritySelectedUnitType, this)( - param_1, (int*)¶m_1), + selectionID, (int*)&selectionID), 0x24); } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 23e0d5646..d6ae6f099 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -46769,7 +46769,7 @@ SHC_3BB0A8C1_0x00522110 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00522150 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00522160 | 0.0% | Pending +SHC_3BB0A8C1_0x00522160 | 100.0% | Reimplemented SHC_3BB0A8C1_0x005221A0 | 0.0% | Pending From 777b120c59535a14afef789b28d6075fc73252ba Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:32 +0200 Subject: [PATCH 058/241] reimplement: SHC_3BB0A8C1_0x00525B70 100.00% Reimplemented --- src/OpenSHC/Map/Units/TribesState/popUnitFromTribe.cpp | 8 ++++---- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/OpenSHC/Map/Units/TribesState/popUnitFromTribe.cpp b/src/OpenSHC/Map/Units/TribesState/popUnitFromTribe.cpp index 74b446b7d..56dcd5ba3 100644 --- a/src/OpenSHC/Map/Units/TribesState/popUnitFromTribe.cpp +++ b/src/OpenSHC/Map/Units/TribesState/popUnitFromTribe.cpp @@ -7,12 +7,12 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x00525B70 int TribesState::popUnitFromTribe(int tribeID) { - int _unitID + int const unitID = MACRO_CALL_MEMBER(OpenSHC::Map::Units::TribesState_Func::getUnitIDForIndexInTribe, this)(tribeID, 0); - if (_unitID != 0) { - MACRO_CALL_MEMBER(OpenSHC::Map::Units::TribesState_Func::removeUnitFromTribe, this)(_unitID, tribeID); + if (unitID != 0) { + MACRO_CALL_MEMBER(OpenSHC::Map::Units::TribesState_Func::removeUnitFromTribe, this)(unitID, tribeID); } - return _unitID; + return unitID; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index d6ae6f099..d054ffa5c 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -46947,7 +46947,7 @@ SHC_3BB0A8C1_0x00525970 | 0.0% | Pending SHC_3BB0A8C1_0x00525A70 | 0.0% | Pending -SHC_3BB0A8C1_0x00525B70 | 0.0% | Pending +SHC_3BB0A8C1_0x00525B70 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00525BA0 | 0.0% | Pending From ddb9933a2a88b7ecd1bf5de76d268500c8a3f8d9 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:32 +0200 Subject: [PATCH 059/241] reimplement: SHC_3BB0A8C1_0x00522BF0 100.00% Reimplemented --- src/OpenSHC/Map/Units/TribesState/queueUnitStance.cpp | 1 - status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/OpenSHC/Map/Units/TribesState/queueUnitStance.cpp b/src/OpenSHC/Map/Units/TribesState/queueUnitStance.cpp index 686c1303a..7805620ba 100644 --- a/src/OpenSHC/Map/Units/TribesState/queueUnitStance.cpp +++ b/src/OpenSHC/Map/Units/TribesState/queueUnitStance.cpp @@ -16,7 +16,6 @@ namespace Map { { DAT_GameSynchronyState::instance.DAT_GameCommandParam0 = stanceID; DAT_GameSynchronyState::instance.DAT_GameCommandParam1 = param_2; - MACRO_CALL_MEMBER(OpenSHC::Synchrony::GameSynchronyState_Func::queueCommand, DAT_GameSynchronyState::ptr)( OpenSHC::Commands::GCT_UNIT_STANCE); } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index d054ffa5c..7ff3a2277 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -46809,7 +46809,7 @@ SHC_3BB0A8C1_0x00522B00 | 0.0% | Pending SHC_3BB0A8C1_0x00522BC0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00522BF0 | 0.0% | Pending +SHC_3BB0A8C1_0x00522BF0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00522C20 | 0.0% | Pending From b0f12733e2f5e5c7e88bc435fb75a667b3ddf0f1 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:32 +0200 Subject: [PATCH 060/241] reimplement: SHC_3BB0A8C1_0x00521210 100.00% Reimplemented --- .../reassignOwnerForTribesOfBehaviorType2.cpp | 10 +++++----- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/OpenSHC/Map/Units/TribesState/reassignOwnerForTribesOfBehaviorType2.cpp b/src/OpenSHC/Map/Units/TribesState/reassignOwnerForTribesOfBehaviorType2.cpp index 4b3a8c79b..0aa70c718 100644 --- a/src/OpenSHC/Map/Units/TribesState/reassignOwnerForTribesOfBehaviorType2.cpp +++ b/src/OpenSHC/Map/Units/TribesState/reassignOwnerForTribesOfBehaviorType2.cpp @@ -7,13 +7,13 @@ namespace Map { namespace Units { // FUNCTION: STRONGHOLDCRUSADER 0x00521210 - void TribesState::reassignOwnerForTribesOfBehaviorType2(int param_1, int param_2) + void TribesState::reassignOwnerForTribesOfBehaviorType2(int fromPlayerID, int toPlayerID) { - for (int i = 1; i < 1250; i++) { - // DAT_TribesState::instance is required instead of this for there to be 100% match + // the original reads DAT_TribesState::instance instead of this + for (int i = 1; i < 1250; ++i) { if (DAT_TribesState::instance.tribes[i].tribeState == 2 - && DAT_TribesState::instance.tribes[i].owner == param_1) { - DAT_TribesState::instance.tribes[i].owner = param_2; + && DAT_TribesState::instance.tribes[i].owner == fromPlayerID) { + DAT_TribesState::instance.tribes[i].owner = toPlayerID; } } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 7ff3a2277..acd6531c4 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -46383,7 +46383,7 @@ SHC_3BB0A8C1_0x00521180 | 0.0% | Pending SHC_3BB0A8C1_0x005211B0 | 0.0% | Pending -SHC_3BB0A8C1_0x00521210 | 0.0% | Pending +SHC_3BB0A8C1_0x00521210 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00521240 | 0.0% | Pending From 2dfcdcc926a01848a03709be70629af031ec466a Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:33 +0200 Subject: [PATCH 061/241] reimplement: SHC_3BB0A8C1_0x005224E0 100.00% Reimplemented --- .../Units/TribesState/setWhetherTribeContainsAnyUnits.cpp | 7 ++++--- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/OpenSHC/Map/Units/TribesState/setWhetherTribeContainsAnyUnits.cpp b/src/OpenSHC/Map/Units/TribesState/setWhetherTribeContainsAnyUnits.cpp index ba8b9ffaf..e80e4fd27 100644 --- a/src/OpenSHC/Map/Units/TribesState/setWhetherTribeContainsAnyUnits.cpp +++ b/src/OpenSHC/Map/Units/TribesState/setWhetherTribeContainsAnyUnits.cpp @@ -7,13 +7,14 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x005224E0 int TribesState::setWhetherTribeContainsAnyUnits(int tribeID) { - for (int i = 0; i < 200; ++i) { + int i = 0; + for (; i < 200; ++i) { if (this->tribes[tribeID].unitSelectionBitMasked[i] != 0) { this->tribes[tribeID].highestID = i; - return i; + break; } } - return 200; + return i; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index acd6531c4..464d17ac6 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -46785,7 +46785,7 @@ SHC_3BB0A8C1_0x00522390 | 0.0% | Pending SHC_3BB0A8C1_0x00522410 | 0.0% | Pending -SHC_3BB0A8C1_0x005224E0 | 0.0% | Pending +SHC_3BB0A8C1_0x005224E0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00522520 | 0.0% | Pending From cf681e01403f6c74559d6bf27d8655a60832e8ef Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:33 +0200 Subject: [PATCH 062/241] reimplement: SHC_3BB0A8C1_0x00523370 100.00% Reimplemented --- src/OpenSHC/Map/Units/TribesState/storeLionXAndYInMapInfo.cpp | 2 +- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/Map/Units/TribesState/storeLionXAndYInMapInfo.cpp b/src/OpenSHC/Map/Units/TribesState/storeLionXAndYInMapInfo.cpp index 2ec59fd4f..f19d2aab6 100644 --- a/src/OpenSHC/Map/Units/TribesState/storeLionXAndYInMapInfo.cpp +++ b/src/OpenSHC/Map/Units/TribesState/storeLionXAndYInMapInfo.cpp @@ -13,7 +13,7 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x00523370 void TribesState::storeLionXAndYInMapInfo(undefined4 x, undefined4 y) { - for (int i = 0; i < 4; i++) { + for (int i = 0; i < 4; ++i) { if (DAT_GameState::instance.mapAndTime.lionLocationsXY[i].x == 0) { DAT_GameState::instance.mapAndTime.lionLocationsXY[i].x = x; DAT_GameState::instance.mapAndTime.lionLocationsXY[i].y = y; diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 464d17ac6..f921388ce 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -46835,7 +46835,7 @@ SHC_3BB0A8C1_0x005232F0 | 0.0% | Pending SHC_3BB0A8C1_0x00523340 | 0.0% | Pending -SHC_3BB0A8C1_0x00523370 | 0.0% | Pending +SHC_3BB0A8C1_0x00523370 | 100.0% | Reimplemented SHC_3BB0A8C1_0x005233A0 | 0.0% | Pending From 3a4dba20f090289fcf0c71b5d8e5a339bf2b4294 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:34 +0200 Subject: [PATCH 063/241] reimplement: SHC_3BB0A8C1_0x00526370 100.00% Reimplemented --- src/OpenSHC/Map/Units/TribesState/upgradeMapTribesState.cpp | 2 +- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/Map/Units/TribesState/upgradeMapTribesState.cpp b/src/OpenSHC/Map/Units/TribesState/upgradeMapTribesState.cpp index 298a12145..ae5da3b87 100644 --- a/src/OpenSHC/Map/Units/TribesState/upgradeMapTribesState.cpp +++ b/src/OpenSHC/Map/Units/TribesState/upgradeMapTribesState.cpp @@ -15,7 +15,7 @@ namespace Map { { MACRO_CALL(OpenSHC::Map::Version_Func::UpgradeMapTribesStateVersionTo_Unknown1)(); MACRO_CALL(OpenSHC::Map::Version_Func::UpgradeMapTribesStateVersionTo_Unknown2)(); - if ((receivedMapVersion != packagerMapVersion) && ((int)receivedMapVersion < 0x8e)) { + if (receivedMapVersion != packagerMapVersion && (int)receivedMapVersion < 142) { MACRO_CALL(OpenSHC::Map::Version_Func::UpgradeMapTribesStateVersionTo_142)(); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index f921388ce..06e7aee38 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -46959,7 +46959,7 @@ SHC_3BB0A8C1_0x005261B0 | 0.0% | Pending SHC_3BB0A8C1_0x005262A0 | 0.0% | Pending -SHC_3BB0A8C1_0x00526370 | 0.0% | Pending +SHC_3BB0A8C1_0x00526370 | 100.0% | Reimplemented SHC_3BB0A8C1_0x005263A0 | 0.0% | Pending From 981102eecc139b455b8d24190bcf73ee16ac3f9e Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:34 +0200 Subject: [PATCH 064/241] reimplement: SHC_3BB0A8C1_0x0051AC80 100.00% Reimplemented --- .../Map/Units/TroopValueState/attackInfoHasHigh2Building.cpp | 3 +-- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/OpenSHC/Map/Units/TroopValueState/attackInfoHasHigh2Building.cpp b/src/OpenSHC/Map/Units/TroopValueState/attackInfoHasHigh2Building.cpp index 20b5eb7b9..4d36f5911 100644 --- a/src/OpenSHC/Map/Units/TroopValueState/attackInfoHasHigh2Building.cpp +++ b/src/OpenSHC/Map/Units/TroopValueState/attackInfoHasHigh2Building.cpp @@ -14,8 +14,7 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x0051AC80 BOOLEnum TroopValueState::attackInfoHasHigh2Building(int buildingID) { - for (int i = 0; i < 1000; i++) { - // fixme: this function doesn't use this-> (would be not 100% matching!) + for (int i = 0; i < 1000; ++i) { if (buildingID == DAT_TroopValueState::instance.attackInfo.high2ValuesArray[i].buildingID) { return TRUE; } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 06e7aee38..2b53d58bc 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -45839,7 +45839,7 @@ SHC_3BB0A8C1_0x0051AB60 | 0.0% | Pending SHC_3BB0A8C1_0x0051ABB0 | 0.0% | Pending -SHC_3BB0A8C1_0x0051AC80 | 0.0% | Pending +SHC_3BB0A8C1_0x0051AC80 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0051ACB0 | 0.0% | Pending From 56b0dd97f32dc742ca7b104cbd84965195cca665 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:34 +0200 Subject: [PATCH 065/241] reimplement: SHC_3BB0A8C1_0x0051B680 100.00% Reimplemented --- .../clearAIInfoLayerOutsideStartZone.cpp | 11 +++++------ status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/OpenSHC/Map/Units/TroopValueState/clearAIInfoLayerOutsideStartZone.cpp b/src/OpenSHC/Map/Units/TroopValueState/clearAIInfoLayerOutsideStartZone.cpp index ae97ac88b..bd2e1d533 100644 --- a/src/OpenSHC/Map/Units/TroopValueState/clearAIInfoLayerOutsideStartZone.cpp +++ b/src/OpenSHC/Map/Units/TroopValueState/clearAIInfoLayerOutsideStartZone.cpp @@ -10,12 +10,11 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x0051B680 void TroopValueState::clearAIInfoLayerOutsideStartZone() { - // fixme: this function doesn't use this-> (would be not 100% matching!) - int area = DAT_TroopValueState::instance.attackInfo.startCon; - for (int iVar2 = 0; iVar2 < 80400; iVar2++) { - if ((DAT_TileMapState::instance.AIInfoLayer[iVar2] != '\0') - && ((short)DAT_TileMapState::instance.PathConnectionLayer[iVar2] != area)) { - DAT_TileMapState::instance.AIInfoLayer[iVar2] = '\0'; + int const startArea = DAT_TroopValueState::instance.attackInfo.startCon; + for (int tile = 0; tile < 80400; ++tile) { + if (DAT_TileMapState::instance.AIInfoLayer[tile] != 0 + && (short)DAT_TileMapState::instance.PathConnectionLayer[tile] != startArea) { + DAT_TileMapState::instance.AIInfoLayer[tile] = 0; } } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 2b53d58bc..88429c156 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -45879,7 +45879,7 @@ SHC_3BB0A8C1_0x0051B420 | 0.0% | Pending SHC_3BB0A8C1_0x0051B570 | 0.0% | Pending -SHC_3BB0A8C1_0x0051B680 | 0.0% | Pending +SHC_3BB0A8C1_0x0051B680 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0051B690 | 0.0% | Pending From 3e8fd3ed2b17d9183b1c27cb8dcdf342692abb38 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:35 +0200 Subject: [PATCH 066/241] reimplement: SHC_3BB0A8C1_0x00519960 100.00% Reimplemented --- .../TroopValueState/getTileInTargetedBuildingTiles.cpp | 6 ++---- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/OpenSHC/Map/Units/TroopValueState/getTileInTargetedBuildingTiles.cpp b/src/OpenSHC/Map/Units/TroopValueState/getTileInTargetedBuildingTiles.cpp index 1a80ac4f5..57976529a 100644 --- a/src/OpenSHC/Map/Units/TroopValueState/getTileInTargetedBuildingTiles.cpp +++ b/src/OpenSHC/Map/Units/TroopValueState/getTileInTargetedBuildingTiles.cpp @@ -12,10 +12,8 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x00519960 BOOLEnum TroopValueState::getTileInTargetedBuildingTiles(int tile) { - // fixme: this function doesn't use this-> (would be not 100% matching!) - for (int _index = 0; _index < DAT_TroopValueState::instance.attackInfo.targetedBuildingTilesArraySize; - _index++) { - if (DAT_TroopValueState::instance.attackInfo.targetedBuildingTilesArray[_index] == tile) { + for (int i = 0; i < DAT_TroopValueState::instance.attackInfo.targetedBuildingTilesArraySize; ++i) { + if (DAT_TroopValueState::instance.attackInfo.targetedBuildingTilesArray[i] == tile) { return TRUE; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 88429c156..c6b495c1e 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -45773,7 +45773,7 @@ SHC_3BB0A8C1_0x00519850 | 0.0% | Pending SHC_3BB0A8C1_0x005198C0 | 0.0% | Pending -SHC_3BB0A8C1_0x00519960 | 0.0% | Pending +SHC_3BB0A8C1_0x00519960 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00519990 | 0.0% | Pending From 303351d07eab41f4626467b283f74ec771ba4dca Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:35 +0200 Subject: [PATCH 067/241] reimplement: SHC_3BB0A8C1_0x00533C70 100.00% Reimplemented --- .../Map/Units/UnitsState/changeDestinationByLeftover.cpp | 5 ++--- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/OpenSHC/Map/Units/UnitsState/changeDestinationByLeftover.cpp b/src/OpenSHC/Map/Units/UnitsState/changeDestinationByLeftover.cpp index 9e893060c..43c6f0c60 100644 --- a/src/OpenSHC/Map/Units/UnitsState/changeDestinationByLeftover.cpp +++ b/src/OpenSHC/Map/Units/UnitsState/changeDestinationByLeftover.cpp @@ -7,10 +7,9 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x00533C70 void UnitsState::changeDestinationByLeftover(int unitID) { - short _leftover = this->units[unitID].leftover; - if (0 < _leftover) { + if (this->units[unitID].leftover > 0) { MACRO_CALL_MEMBER(OpenSHC::Map::Units::UnitsState_Func::changeDestinationByAmount, this)( - unitID, _leftover); + unitID, this->units[unitID].leftover); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index c6b495c1e..cdd78484b 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -50689,7 +50689,7 @@ SHC_3BB0A8C1_0x00533A10 | 0.0% | Pending SHC_3BB0A8C1_0x00533B30 | 0.0% | Pending -SHC_3BB0A8C1_0x00533C70 | 0.0% | Pending +SHC_3BB0A8C1_0x00533C70 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00533CA0 | 0.0% | Pending From db76c9339b85c486dbc270668e72f63f26f8c1b6 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:35 +0200 Subject: [PATCH 068/241] reimplement: SHC_3BB0A8C1_0x00530FD0 78.26% Range check compiled branchles --- .../checkIfCitizenUnitIsAliveBasedOnState.cpp | 13 +++++-------- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/src/OpenSHC/Map/Units/UnitsState/checkIfCitizenUnitIsAliveBasedOnState.cpp b/src/OpenSHC/Map/Units/UnitsState/checkIfCitizenUnitIsAliveBasedOnState.cpp index 6b387660c..7006ce23d 100644 --- a/src/OpenSHC/Map/Units/UnitsState/checkIfCitizenUnitIsAliveBasedOnState.cpp +++ b/src/OpenSHC/Map/Units/UnitsState/checkIfCitizenUnitIsAliveBasedOnState.cpp @@ -11,19 +11,16 @@ namespace Map { using OpenSHC::WindowsHelper::Enums::BOOLEnum; // FUNCTION: STRONGHOLDCRUSADER 0x00530FD0 - BOOLEnum UnitsState::checkIfCitizenUnitIsAliveBasedOnState(int param_1) + BOOLEnum UnitsState::checkIfCitizenUnitIsAliveBasedOnState(int unitID) { - short _state = (unsigned short)this->units[param_1].state.generic; - if ((0x6f <= _state)) { - if (_state <= 0x74) { + short const state = (ushort)this->units[unitID].state.generic; + if (state >= 111) { + if (state <= 116) { return TRUE; - } else { - return FALSE; } - - } else { return FALSE; } + return FALSE; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index cdd78484b..842f5dc45 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -49659,7 +49659,7 @@ SHC_3BB0A8C1_0x00530EB0 | 0.0% | Pending SHC_3BB0A8C1_0x00530F20 | 0.0% | Pending -SHC_3BB0A8C1_0x00530FD0 | 0.0% | Pending +SHC_3BB0A8C1_0x00530FD0 | 78.3% | Range check compiled branchles SHC_3BB0A8C1_0x00531000 | 0.0% | Pending From 3eeea10adb71e23e09cdca57b7fe74ba206c08a9 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:36 +0200 Subject: [PATCH 069/241] reimplement: SHC_3BB0A8C1_0x00532F60 100.00% Reimplemented --- src/OpenSHC/Map/Units/UnitsState/getArmySize.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/OpenSHC/Map/Units/UnitsState/getArmySize.cpp b/src/OpenSHC/Map/Units/UnitsState/getArmySize.cpp index 0c11f2a78..67b63cbc3 100644 --- a/src/OpenSHC/Map/Units/UnitsState/getArmySize.cpp +++ b/src/OpenSHC/Map/Units/UnitsState/getArmySize.cpp @@ -10,6 +10,7 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x00532f60 int UnitsState::getArmySize(int playerID) { return DAT_GameState::ptr->playerDataArray[playerID].armySize; } + } } From 1c68e1bcb16a0503631402bb55d2f9887e26c361 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:36 +0200 Subject: [PATCH 070/241] reimplement: SHC_3BB0A8C1_0x00535DF0 100.00% Reimplemented --- src/OpenSHC/Map/Units/UnitsState/getFirstSelectedUnitID.cpp | 2 +- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/Map/Units/UnitsState/getFirstSelectedUnitID.cpp b/src/OpenSHC/Map/Units/UnitsState/getFirstSelectedUnitID.cpp index 2c2459a7c..03f65f7be 100644 --- a/src/OpenSHC/Map/Units/UnitsState/getFirstSelectedUnitID.cpp +++ b/src/OpenSHC/Map/Units/UnitsState/getFirstSelectedUnitID.cpp @@ -18,7 +18,7 @@ namespace Map { DAT_GameSynchronyState::instance.DAT_GameCommandParam0 = param_1; DAT_GameSynchronyState::instance.DAT_GameCommandParam1 = DAT_TribesState::instance.DAT_CurrentTribeID; MACRO_CALL_MEMBER(OpenSHC::Synchrony::GameSynchronyState_Func::queueCommand, DAT_GameSynchronyState::ptr)( - ((GameCommandType)0x48)); + (GameCommandType)0x48); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 842f5dc45..f15ca7dc2 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -51103,7 +51103,7 @@ SHC_3BB0A8C1_0x00535B00 | 0.0% | Pending SHC_3BB0A8C1_0x00535BC0 | 0.0% | Pending -SHC_3BB0A8C1_0x00535DF0 | 0.0% | Pending +SHC_3BB0A8C1_0x00535DF0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00535E20 | 0.0% | Pending From 304373dfabe4020cb99266eee0b2629b2a69521c Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:36 +0200 Subject: [PATCH 071/241] reimplement: SHC_3BB0A8C1_0x005339F0 100.00% Reimplemented --- .../Map/Units/UnitsState/hasTunnelerNotFinishedDigging.cpp | 4 ++-- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/OpenSHC/Map/Units/UnitsState/hasTunnelerNotFinishedDigging.cpp b/src/OpenSHC/Map/Units/UnitsState/hasTunnelerNotFinishedDigging.cpp index da188c72f..525d63a1a 100644 --- a/src/OpenSHC/Map/Units/UnitsState/hasTunnelerNotFinishedDigging.cpp +++ b/src/OpenSHC/Map/Units/UnitsState/hasTunnelerNotFinishedDigging.cpp @@ -9,9 +9,9 @@ namespace Map { using OpenSHC::WindowsHelper::Enums::BOOLEnum; // FUNCTION: STRONGHOLDCRUSADER 0x005339F0 - BOOLEnum UnitsState::hasTunnelerNotFinishedDigging(int param_1) + BOOLEnum UnitsState::hasTunnelerNotFinishedDigging(int unitID) { - return this->units[param_1].tunnelerFinishedDigging == 0; + return this->units[unitID].tunnelerFinishedDigging == 0; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index f15ca7dc2..06fcf93da 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -50683,7 +50683,7 @@ SHC_3BB0A8C1_0x00533960 | 0.0% | Pending SHC_3BB0A8C1_0x005339A0 | 0.0% | Pending -SHC_3BB0A8C1_0x005339F0 | 0.0% | Pending +SHC_3BB0A8C1_0x005339F0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00533A10 | 0.0% | Pending From ab8028ad199e79dca739cc56e00d84f0a4fc6f38 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:37 +0200 Subject: [PATCH 072/241] reimplement: SHC_3BB0A8C1_0x00530080 100.00% Reimplemented --- .../Units/UnitsState/isComputerManagedNonPeasant.cpp | 11 +++++------ status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/OpenSHC/Map/Units/UnitsState/isComputerManagedNonPeasant.cpp b/src/OpenSHC/Map/Units/UnitsState/isComputerManagedNonPeasant.cpp index 6e5492354..12d1c7acb 100644 --- a/src/OpenSHC/Map/Units/UnitsState/isComputerManagedNonPeasant.cpp +++ b/src/OpenSHC/Map/Units/UnitsState/isComputerManagedNonPeasant.cpp @@ -14,15 +14,14 @@ namespace Map { using OpenSHC::WindowsHelper::Enums::BOOLEnum; // FUNCTION: STRONGHOLDCRUSADER 0x00530080 - BOOLEnum UnitsState::isComputerManagedNonPeasant(int param_1) + BOOLEnum UnitsState::isComputerManagedNonPeasant(int unitID) { - // fixme: UnitType is loaded as an unsigned short in this function (movzx), but cast to a signed version on - // the stack for use later. - short UVar1 = (unsigned short)this->units[param_1].unitType; - if (UVar1 == OpenSHC::Map::Units::UT_PEASANT) { + // the unit type is loaded zero-extended but used as a signed short afterwards + short const unitType = (ushort)this->units[unitID].unitType; + if (unitType == OpenSHC::Map::Units::UT_PEASANT) { return FALSE; } - return DAT_UnitPropertiesDefinedData::instance.COMPUTER_MANAGED[UVar1] != 0; + return DAT_UnitPropertiesDefinedData::instance.COMPUTER_MANAGED[unitType] != 0; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 06fcf93da..f888b0470 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -49361,7 +49361,7 @@ SHC_3BB0A8C1_0x0052FE90 | 0.0% | Pending SHC_3BB0A8C1_0x0052FF80 | 0.0% | Pending -SHC_3BB0A8C1_0x00530080 | 0.0% | Pending +SHC_3BB0A8C1_0x00530080 | 100.0% | Reimplemented SHC_3BB0A8C1_0x005300B0 | 0.0% | Pending From 7284be551b41100df803d5af7449fe0048a187f7 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:37 +0200 Subject: [PATCH 073/241] reimplement: SHC_3BB0A8C1_0x00536CC0 100.00% Reimplemented --- .../Map/Units/UnitsState/queueClickNavigateMenuOrEscape.cpp | 2 +- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/Map/Units/UnitsState/queueClickNavigateMenuOrEscape.cpp b/src/OpenSHC/Map/Units/UnitsState/queueClickNavigateMenuOrEscape.cpp index 84fe50702..aa4e4019f 100644 --- a/src/OpenSHC/Map/Units/UnitsState/queueClickNavigateMenuOrEscape.cpp +++ b/src/OpenSHC/Map/Units/UnitsState/queueClickNavigateMenuOrEscape.cpp @@ -14,7 +14,7 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x00536CC0 void UnitsState::queueClickNavigateMenuOrEscape(undefined4 param_1) { - DAT_GameSynchronyState::instance.DAT_GameCommandParam0 = -1; + DAT_GameSynchronyState::instance.DAT_GameCommandParam0 = -2; DAT_GameSynchronyState::instance.DAT_GameCommandParam1 = param_1; MACRO_CALL_MEMBER(OpenSHC::Synchrony::GameSynchronyState_Func::queueCommand, DAT_GameSynchronyState::ptr)( OpenSHC::Commands::GCT_ESCAPE); diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index f888b0470..6464473a9 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -51207,7 +51207,7 @@ SHC_3BB0A8C1_0x00536C70 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00536C90 | 0.0% | Pending -SHC_3BB0A8C1_0x00536CC0 | 0.0% | Pending +SHC_3BB0A8C1_0x00536CC0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00536CF0 | 0.0% | Pending From 51c5698250a858b0d5149c11d169f16458ddd82c Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:37 +0200 Subject: [PATCH 074/241] reimplement: SHC_3BB0A8C1_0x00533F90 100.00% Reimplemented --- .../Units/UnitsState/saveUnitStateBeforeInterruption.cpp | 6 +++--- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/OpenSHC/Map/Units/UnitsState/saveUnitStateBeforeInterruption.cpp b/src/OpenSHC/Map/Units/UnitsState/saveUnitStateBeforeInterruption.cpp index d8b019de5..90eb0cbb5 100644 --- a/src/OpenSHC/Map/Units/UnitsState/saveUnitStateBeforeInterruption.cpp +++ b/src/OpenSHC/Map/Units/UnitsState/saveUnitStateBeforeInterruption.cpp @@ -7,10 +7,10 @@ namespace Map { namespace Units { // FUNCTION: STRONGHOLDCRUSADER 0x00533F90 - void UnitsState::saveUnitStateBeforeInterruption(int param_1) + void UnitsState::saveUnitStateBeforeInterruption(int unitID) { - this->units[param_1].tunnelerFinishedDigging = 5; - this->units[param_1].state_3 = this->units[param_1].state; + this->units[unitID].tunnelerFinishedDigging = 5; + this->units[unitID].state_3 = this->units[unitID].state; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 6464473a9..087f96f31 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -50777,7 +50777,7 @@ SHC_3BB0A8C1_0x00533F84 | 0.0% | Pending SHC_3BB0A8C1_0x00533F85 | 0.0% | Pending -SHC_3BB0A8C1_0x00533F90 | 0.0% | Pending +SHC_3BB0A8C1_0x00533F90 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00533FC0 | 0.0% | Pending From 7bcf29f704b647793dd167513f0b7c8ee2922a66 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:38 +0200 Subject: [PATCH 075/241] reimplement: SHC_3BB0A8C1_0x0052FBF0 100.00% Reimplemented --- src/OpenSHC/Map/Units/UnitsState/sitDownIfStanding.cpp | 8 ++++---- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/OpenSHC/Map/Units/UnitsState/sitDownIfStanding.cpp b/src/OpenSHC/Map/Units/UnitsState/sitDownIfStanding.cpp index 9bc8fce9f..d86d69a7c 100644 --- a/src/OpenSHC/Map/Units/UnitsState/sitDownIfStanding.cpp +++ b/src/OpenSHC/Map/Units/UnitsState/sitDownIfStanding.cpp @@ -5,13 +5,13 @@ namespace Map { namespace Units { // FUNCTION: STRONGHOLDCRUSADER 0x0052FBF0 - BOOLEnum UnitsState::sitDownIfStanding(int param_1) + BOOLEnum UnitsState::sitDownIfStanding(int unitID) { - if (this->units[param_1].seated != 0) { + if (this->units[unitID].seated != 0) { return FALSE; } - this->units[param_1].substate = 0x65; - this->units[param_1].animationCycleNumber = 0; + this->units[unitID].substate = 101; + this->units[unitID].animationCycleNumber = 0; return TRUE; } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 087f96f31..cbf3acab6 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -49347,7 +49347,7 @@ SHC_3BB0A8C1_0x0052F7E0 | 0.0% | Pending SHC_3BB0A8C1_0x0052FBB0 | 0.0% | Pending -SHC_3BB0A8C1_0x0052FBF0 | 0.0% | Pending +SHC_3BB0A8C1_0x0052FBF0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0052FC30 | 0.0% | Pending From 288e6412e65abdc9ca08943a90e52cc74c957ef8 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:38 +0200 Subject: [PATCH 076/241] reimplement: SHC_3BB0A8C1_0x0052FBB0 100.00% Reimplemented --- src/OpenSHC/Map/Units/UnitsState/standUpIfSeated.cpp | 8 ++++---- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/OpenSHC/Map/Units/UnitsState/standUpIfSeated.cpp b/src/OpenSHC/Map/Units/UnitsState/standUpIfSeated.cpp index a3caedf87..89cacac5d 100644 --- a/src/OpenSHC/Map/Units/UnitsState/standUpIfSeated.cpp +++ b/src/OpenSHC/Map/Units/UnitsState/standUpIfSeated.cpp @@ -5,13 +5,13 @@ namespace Map { namespace Units { // FUNCTION: STRONGHOLDCRUSADER 0x0052FBB0 - BOOLEnum UnitsState::standUpIfSeated(int param_1) + BOOLEnum UnitsState::standUpIfSeated(int unitID) { - if (this->units[param_1].seated == 0) { + if (this->units[unitID].seated == 0) { return FALSE; } - this->units[param_1].substate = 100; - this->units[param_1].animationCycleNumber = 0; + this->units[unitID].substate = 100; + this->units[unitID].animationCycleNumber = 0; return TRUE; } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index cbf3acab6..4f52aa6c3 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -49345,7 +49345,7 @@ SHC_3BB0A8C1_0x0052F730 | 0.0% | Pending SHC_3BB0A8C1_0x0052F7E0 | 0.0% | Pending -SHC_3BB0A8C1_0x0052FBB0 | 0.0% | Pending +SHC_3BB0A8C1_0x0052FBB0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0052FBF0 | 100.0% | Reimplemented From 933e849f90598cf782692bd1dd41cb045300c3a3 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:38 +0200 Subject: [PATCH 077/241] reimplement: SHC_3BB0A8C1_0x00534460 100.00% Reimplemented --- src/OpenSHC/Map/Units/UnitsState/unitIsInMoat.cpp | 2 +- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/Map/Units/UnitsState/unitIsInMoat.cpp b/src/OpenSHC/Map/Units/UnitsState/unitIsInMoat.cpp index 3fbe35a41..70b2ba45c 100644 --- a/src/OpenSHC/Map/Units/UnitsState/unitIsInMoat.cpp +++ b/src/OpenSHC/Map/Units/UnitsState/unitIsInMoat.cpp @@ -14,7 +14,7 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x00534460 BOOLEnum UnitsState::unitIsInMoat(int unitID) { - return DAT_TileMapState::instance.LogicLayer[this->units[unitID].tile] >> 30 & TRUE; + return (uint)DAT_TileMapState::instance.LogicLayer[this->units[unitID].tile] >> 30 & 1; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 4f52aa6c3..0b5e3b7b7 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -50809,7 +50809,7 @@ SHC_3BB0A8C1_0x005343C0 | 0.0% | Pending SHC_3BB0A8C1_0x005343F0 | 0.0% | Pending -SHC_3BB0A8C1_0x00534460 | 0.0% | Pending +SHC_3BB0A8C1_0x00534460 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00534490 | 0.0% | Pending From a4ea4b376abb2c2771da3c471e75a3abee7e120f Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:39 +0200 Subject: [PATCH 078/241] reimplement: SHC_3BB0A8C1_0x0053CAC0 100.00% Reimplemented --- src/OpenSHC/Map/Units/UpdateWorker_ConsiderTakingABreakUnk.cpp | 2 +- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/Map/Units/UpdateWorker_ConsiderTakingABreakUnk.cpp b/src/OpenSHC/Map/Units/UpdateWorker_ConsiderTakingABreakUnk.cpp index 57ddb4f4c..28480ae9c 100644 --- a/src/OpenSHC/Map/Units/UpdateWorker_ConsiderTakingABreakUnk.cpp +++ b/src/OpenSHC/Map/Units/UpdateWorker_ConsiderTakingABreakUnk.cpp @@ -14,7 +14,7 @@ namespace Map { BOOLEnum Units::UpdateWorker_ConsiderTakingABreakUnk(int unitID) { return MACRO_CALL(OpenSHC::Map::Units_Func::ConsiderHavingABreakNowUnk)( - unitID, (UnitState)((int)((int)(short)DAT_UnitsState::instance.units[unitID].state.generic))); + unitID, (UnitState)(short)DAT_UnitsState::instance.units[unitID].state.generic); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 0b5e3b7b7..a954c68a1 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -59669,7 +59669,7 @@ SHC_3BB0A8C1_0x0053C400 | 0.0% | Pending SHC_3BB0A8C1_0x0053C590 | 0.0% | Pending -SHC_3BB0A8C1_0x0053CAC0 | 0.0% | Pending +SHC_3BB0A8C1_0x0053CAC0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0053CAE0 | 0.0% | Pending From a00c81f1926e46be0ac6c087573e91d09a740f48 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:39 +0200 Subject: [PATCH 079/241] reimplement: SHC_3BB0A8C1_0x0041A390 100.00% Reimplemented --- .../Map/Version/SetBuildingsEmployeeCountToValue.cpp | 9 ++++----- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/OpenSHC/Map/Version/SetBuildingsEmployeeCountToValue.cpp b/src/OpenSHC/Map/Version/SetBuildingsEmployeeCountToValue.cpp index 7954d6e4c..90da3b480 100644 --- a/src/OpenSHC/Map/Version/SetBuildingsEmployeeCountToValue.cpp +++ b/src/OpenSHC/Map/Version/SetBuildingsEmployeeCountToValue.cpp @@ -14,12 +14,11 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x0041A390 void Version::SetBuildingsEmployeeCountToValue() { - for (int _buildingID = 1; _buildingID < 2000; _buildingID++) { - if (DAT_BuildingsState::instance.buildings[_buildingID].logicalState != ((BuildingLogicalState)0)) { - DAT_BuildingsState::instance.buildings[_buildingID].buildingTypeBasedEmployeeCount + for (int buildingID = 1; buildingID < 2000; ++buildingID) { + if (DAT_BuildingsState::instance.buildings[buildingID].logicalState != (BuildingLogicalState)0) { + DAT_BuildingsState::instance.buildings[buildingID].buildingTypeBasedEmployeeCount = DAT_BuildingDefinedData::instance - .EmployeeCountPerBuildingType[DAT_BuildingsState::instance.buildings[_buildingID] - .buildingType] + .EmployeeCountPerBuildingType[DAT_BuildingsState::instance.buildings[buildingID].buildingType] .shortValue; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index a954c68a1..3ebf1741b 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -6049,7 +6049,7 @@ SHC_3BB0A8C1_0x0041A2E0 | 0.0% | Pending SHC_3BB0A8C1_0x0041A340 | 0.0% | Pending -SHC_3BB0A8C1_0x0041A390 | 0.0% | Pending +SHC_3BB0A8C1_0x0041A390 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0041A3C0 | 0.0% | Pending From ffd1bd9fa291f727beba63f2a505b50ce30c7b1c Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:39 +0200 Subject: [PATCH 080/241] reimplement: SHC_3BB0A8C1_0x0041A2B0 100.00% Reimplemented --- src/OpenSHC/Map/Version/SetDairyCheeseToZero.cpp | 10 +++++----- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/OpenSHC/Map/Version/SetDairyCheeseToZero.cpp b/src/OpenSHC/Map/Version/SetDairyCheeseToZero.cpp index 8f5dc46b4..d5d8a1b5f 100644 --- a/src/OpenSHC/Map/Version/SetDairyCheeseToZero.cpp +++ b/src/OpenSHC/Map/Version/SetDairyCheeseToZero.cpp @@ -19,11 +19,11 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x0041A2B0 void Version::SetDairyCheeseToZero() { - for (int _buildingID = 1; _buildingID < 2000; _buildingID++) { - if ((DAT_BuildingsState::instance.buildings[_buildingID].logicalState != ((BuildingLogicalState)0)) - && (DAT_BuildingsState::instance.buildings[_buildingID].buildingType - == OpenSHC::Map::Buildings::BT_DAIRYFARM)) { - DAT_BuildingsState::instance.buildings[_buildingID].flagonsOfAleOrCheeseOrReleaseDogs = 0; + for (int buildingID = 1; buildingID < 2000; ++buildingID) { + if (DAT_BuildingsState::instance.buildings[buildingID].logicalState != (BuildingLogicalState)0 + && DAT_BuildingsState::instance.buildings[buildingID].buildingType + == OpenSHC::Map::Buildings::BT_DAIRYFARM) { + DAT_BuildingsState::instance.buildings[buildingID].flagonsOfAleOrCheeseOrReleaseDogs = 0; } } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 3ebf1741b..7047687d4 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -6043,7 +6043,7 @@ SHC_3BB0A8C1_0x0041A2AE | 0.0% | Pending SHC_3BB0A8C1_0x0041A2AF | 0.0% | Pending -SHC_3BB0A8C1_0x0041A2B0 | 0.0% | Pending +SHC_3BB0A8C1_0x0041A2B0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0041A2E0 | 0.0% | Pending From 5cde769911cedaf9959f39c4b65d222912367849 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:40 +0200 Subject: [PATCH 081/241] reimplement: SHC_3BB0A8C1_0x0041A060 100.00% Reimplemented --- .../SetUndamagedBuildingHealthToValue.cpp | 19 ++++++++++--------- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/OpenSHC/Map/Version/SetUndamagedBuildingHealthToValue.cpp b/src/OpenSHC/Map/Version/SetUndamagedBuildingHealthToValue.cpp index dc430a67d..b92f15e58 100644 --- a/src/OpenSHC/Map/Version/SetUndamagedBuildingHealthToValue.cpp +++ b/src/OpenSHC/Map/Version/SetUndamagedBuildingHealthToValue.cpp @@ -14,15 +14,16 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x0041A060 void Version::SetUndamagedBuildingHealthToValue() { - for (int _buildingID = 1; _buildingID < 2000; _buildingID += 1) { - if ((DAT_BuildingsState::instance.buildings[_buildingID].logicalState != ((BuildingLogicalState)0)) - && (DAT_BuildingsState::instance.buildings[_buildingID].currentHealth - == DAT_BuildingsState::instance.buildings[_buildingID].maxHealth)) { - uint health = DAT_BuildingDefinedData::instance - .BuildingHP[(short)DAT_BuildingsState::instance.buildings[_buildingID].buildingType] - .ushortValue; - DAT_BuildingsState::instance.buildings[_buildingID].maxHealth = health; - DAT_BuildingsState::instance.buildings[_buildingID].currentHealth = health; + for (int buildingID = 1; buildingID < 2000; ++buildingID) { + if (DAT_BuildingsState::instance.buildings[buildingID].logicalState != (BuildingLogicalState)0 + && DAT_BuildingsState::instance.buildings[buildingID].currentHealth + == DAT_BuildingsState::instance.buildings[buildingID].maxHealth) { + uint const health + = DAT_BuildingDefinedData::instance + .BuildingHP[(short)DAT_BuildingsState::instance.buildings[buildingID].buildingType] + .ushortValue; + DAT_BuildingsState::instance.buildings[buildingID].maxHealth = health; + DAT_BuildingsState::instance.buildings[buildingID].currentHealth = health; } } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 7047687d4..fd4c2eb03 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -5817,7 +5817,7 @@ SHC_3BB0A8C1_0x00419EB0 | 0.0% | Pending SHC_3BB0A8C1_0x00419FA0 | 0.0% | Pending -SHC_3BB0A8C1_0x0041A060 | 0.0% | Pending +SHC_3BB0A8C1_0x0041A060 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0041A0A0 | 0.0% | Pending From 7bcd8029a1567d0a38c56b7c51eea2457cf15d60 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:40 +0200 Subject: [PATCH 082/241] reimplement: SHC_3BB0A8C1_0x0044AAA0 100.00% Reimplemented --- src/OpenSHC/Map/Version/UpdateDestroyedBuildingCountData.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/Map/Version/UpdateDestroyedBuildingCountData.cpp b/src/OpenSHC/Map/Version/UpdateDestroyedBuildingCountData.cpp index 85a599226..d72f5777d 100644 --- a/src/OpenSHC/Map/Version/UpdateDestroyedBuildingCountData.cpp +++ b/src/OpenSHC/Map/Version/UpdateDestroyedBuildingCountData.cpp @@ -6,9 +6,9 @@ namespace OpenSHC { namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x0044AAA0 - void Version::UpdateDestroyedBuildingCountData(int param_1) + void Version::UpdateDestroyedBuildingCountData(int destroyedCount) { - DAT_DestroyedBuildingsCountHistory::instance[0] = DAT_DestroyedBuildingsCountHistory::instance[0] + param_1; + DAT_DestroyedBuildingsCountHistory::instance[0] += destroyedCount; } } From 505a8c90ae1af60d49722b50a5fe08fa438f7f20 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:40 +0200 Subject: [PATCH 083/241] reimplement: SHC_3BB0A8C1_0x0041A0D0 100.00% Reimplemented --- src/OpenSHC/Map/Version/UpgradeBuildingField1.cpp | 8 ++++---- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/OpenSHC/Map/Version/UpgradeBuildingField1.cpp b/src/OpenSHC/Map/Version/UpgradeBuildingField1.cpp index acc2b16d1..08b6f94a6 100644 --- a/src/OpenSHC/Map/Version/UpgradeBuildingField1.cpp +++ b/src/OpenSHC/Map/Version/UpgradeBuildingField1.cpp @@ -13,10 +13,10 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x0041A0D0 void Version::UpgradeBuildingField1() { - for (int _buildingID = 1; _buildingID < 2000; _buildingID++) { - if (DAT_BuildingsState::instance.buildings[_buildingID].logicalState != ((BuildingLogicalState)0)) { - DAT_BuildingsState::instance.buildings[_buildingID].uidWhenPlaced - = DAT_BuildingsState::instance.buildings[_buildingID].uidPlaced; + for (int buildingID = 1; buildingID < 2000; ++buildingID) { + if (DAT_BuildingsState::instance.buildings[buildingID].logicalState != (BuildingLogicalState)0) { + DAT_BuildingsState::instance.buildings[buildingID].uidWhenPlaced + = DAT_BuildingsState::instance.buildings[buildingID].uidPlaced; } } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index fd4c2eb03..1979a3f4c 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -5823,7 +5823,7 @@ SHC_3BB0A8C1_0x0041A0A0 | 0.0% | Pending SHC_3BB0A8C1_0x0041A0B0 | 0.0% | Pending -SHC_3BB0A8C1_0x0041A0D0 | 0.0% | Pending +SHC_3BB0A8C1_0x0041A0D0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0041A100 | 0.0% | Pending From b5dd95fc5496c956eda2bc08e2c254f5448a2b9b Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:41 +0200 Subject: [PATCH 084/241] reimplement: SHC_3BB0A8C1_0x0041A3C0 100.00% Reimplemented --- src/OpenSHC/Map/Version/UpgradeBuildingField2.cpp | 8 ++++---- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/OpenSHC/Map/Version/UpgradeBuildingField2.cpp b/src/OpenSHC/Map/Version/UpgradeBuildingField2.cpp index b252d01fc..aac4587ba 100644 --- a/src/OpenSHC/Map/Version/UpgradeBuildingField2.cpp +++ b/src/OpenSHC/Map/Version/UpgradeBuildingField2.cpp @@ -13,10 +13,10 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x0041A3C0 void Version::UpgradeBuildingField2() { - for (int _buildingID = 1; _buildingID < 2000; _buildingID++) { - if (DAT_BuildingsState::instance.buildings[_buildingID].logicalState != ((BuildingLogicalState)0)) { - DAT_BuildingsState::instance.buildings[_buildingID].field206_0x288 = 0; - DAT_BuildingsState::instance.buildings[_buildingID].field188_0x264 = 0; + for (int buildingID = 1; buildingID < 2000; ++buildingID) { + if (DAT_BuildingsState::instance.buildings[buildingID].logicalState != (BuildingLogicalState)0) { + DAT_BuildingsState::instance.buildings[buildingID].field206_0x288 = 0; + DAT_BuildingsState::instance.buildings[buildingID].field188_0x264 = 0; } } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 1979a3f4c..c274dd29b 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -6051,7 +6051,7 @@ SHC_3BB0A8C1_0x0041A340 | 0.0% | Pending SHC_3BB0A8C1_0x0041A390 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0041A3C0 | 0.0% | Pending +SHC_3BB0A8C1_0x0041A3C0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0041A3F0 | 0.0% | Pending From cbd86c15041df96cdc24dce9d64feb492157ec05 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:41 +0200 Subject: [PATCH 085/241] reimplement: SHC_3BB0A8C1_0x0041A5F0 100.00% Reimplemented --- src/OpenSHC/Map/Version/UpgradeBuildingField4.cpp | 6 +++--- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/OpenSHC/Map/Version/UpgradeBuildingField4.cpp b/src/OpenSHC/Map/Version/UpgradeBuildingField4.cpp index a9cee13e8..674418cb3 100644 --- a/src/OpenSHC/Map/Version/UpgradeBuildingField4.cpp +++ b/src/OpenSHC/Map/Version/UpgradeBuildingField4.cpp @@ -13,9 +13,9 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x0041A5F0 void Version::UpgradeBuildingField4() { - for (int _buildingID = 1; _buildingID < 2000; _buildingID++) { - if (DAT_BuildingsState::instance.buildings[_buildingID].logicalState != ((BuildingLogicalState)0)) { - DAT_BuildingsState::instance.buildings[_buildingID].field244_0x2c6 = 0; + for (int buildingID = 1; buildingID < 2000; ++buildingID) { + if (DAT_BuildingsState::instance.buildings[buildingID].logicalState != (BuildingLogicalState)0) { + DAT_BuildingsState::instance.buildings[buildingID].field244_0x2c6 = 0; } } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index c274dd29b..dfa0b4822 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -6063,7 +6063,7 @@ SHC_3BB0A8C1_0x0041A520 | 0.0% | Pending SHC_3BB0A8C1_0x0041A5C0 | 0.0% | Pending -SHC_3BB0A8C1_0x0041A5F0 | 0.0% | Pending +SHC_3BB0A8C1_0x0041A5F0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0041A620 | 0.0% | Pending From 3bc87179100c550491fcae98b29c5033e884d2ec Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:41 +0200 Subject: [PATCH 086/241] reimplement: SHC_3BB0A8C1_0x0041A620 100.00% Reimplemented --- .../Map/Version/UpgradeClearBuildings1000AndHigher.cpp | 5 +++-- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/OpenSHC/Map/Version/UpgradeClearBuildings1000AndHigher.cpp b/src/OpenSHC/Map/Version/UpgradeClearBuildings1000AndHigher.cpp index 5f2d93a59..ba3dffb2f 100644 --- a/src/OpenSHC/Map/Version/UpgradeClearBuildings1000AndHigher.cpp +++ b/src/OpenSHC/Map/Version/UpgradeClearBuildings1000AndHigher.cpp @@ -13,9 +13,10 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x0041A620 void Version::UpgradeClearBuildings1000AndHigher() { - for (int _buildingID = 1000; _buildingID < 2000; _buildingID++) { + for (int buildingID = 1000; buildingID < 2000; ++buildingID) { MACRO_CALL_MEMBER(OpenSHC::IO::LowLevelMemory_Func::fillMemory_ByteValue, DAT_LowLevelMemory::ptr)( - 0x32c, '\0', &DAT_BuildingsState::instance.buildings[_buildingID]); + sizeof(DAT_BuildingsState::instance.buildings[buildingID]), 0, + &DAT_BuildingsState::instance.buildings[buildingID]); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index dfa0b4822..8143fa49a 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -6065,7 +6065,7 @@ SHC_3BB0A8C1_0x0041A5C0 | 0.0% | Pending SHC_3BB0A8C1_0x0041A5F0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0041A620 | 0.0% | Pending +SHC_3BB0A8C1_0x0041A620 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0041A650 | 0.0% | Pending From 4c2cb9fc1c5c76a4a67de65aae3bec413be45b56 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:42 +0200 Subject: [PATCH 087/241] reimplement: SHC_3BB0A8C1_0x0041A0A0 100.00% Reimplemented --- src/OpenSHC/Map/Version/UpgradeFirst9Buildings.cpp | 2 +- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/Map/Version/UpgradeFirst9Buildings.cpp b/src/OpenSHC/Map/Version/UpgradeFirst9Buildings.cpp index aad5b09e6..a9874e9fa 100644 --- a/src/OpenSHC/Map/Version/UpgradeFirst9Buildings.cpp +++ b/src/OpenSHC/Map/Version/UpgradeFirst9Buildings.cpp @@ -9,7 +9,7 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x0041A0A0 void Version::UpgradeFirst9Buildings() { - for (int buildingID = 1; buildingID < 9; buildingID++) { + for (int buildingID = 1; buildingID < 9; ++buildingID) { MACRO_CALL_MEMBER(OpenSHC::Map::Buildings::BuildingsState_Func::setupBarracksCampgroundPositions, DAT_BuildingsState::ptr)(buildingID); MACRO_CALL_MEMBER(OpenSHC::Map::Buildings::BuildingsState_Func::setupMercenaryPostCampgroundPositions, diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 8143fa49a..3de7b9e7d 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -5819,7 +5819,7 @@ SHC_3BB0A8C1_0x00419FA0 | 0.0% | Pending SHC_3BB0A8C1_0x0041A060 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0041A0A0 | 0.0% | Pending +SHC_3BB0A8C1_0x0041A0A0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0041A0B0 | 0.0% | Pending From 88f6d4fd69857bf6a7f84a25dcd2955f5ef999fc Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:42 +0200 Subject: [PATCH 088/241] reimplement: SHC_3BB0A8C1_0x0041A5C0 100.00% Reimplemented --- src/OpenSHC/Map/Version/UpgradeKillingPitField.cpp | 10 +++++----- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/OpenSHC/Map/Version/UpgradeKillingPitField.cpp b/src/OpenSHC/Map/Version/UpgradeKillingPitField.cpp index 24ee46f36..97ec5cae3 100644 --- a/src/OpenSHC/Map/Version/UpgradeKillingPitField.cpp +++ b/src/OpenSHC/Map/Version/UpgradeKillingPitField.cpp @@ -15,11 +15,11 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x0041A5C0 void Version::UpgradeKillingPitField() { - for (int _buildingID = 1; _buildingID < 2000; _buildingID++) { - if ((DAT_BuildingsState::instance.buildings[_buildingID].logicalState != ((BuildingLogicalState)0)) - && (DAT_BuildingsState::instance.buildings[_buildingID].buildingType - == OpenSHC::Map::Buildings::BT_KILLINGPIT)) { - DAT_BuildingsState::instance.buildings[_buildingID].killingPitField = 0; + for (int buildingID = 1; buildingID < 2000; ++buildingID) { + if (DAT_BuildingsState::instance.buildings[buildingID].logicalState != (BuildingLogicalState)0 + && DAT_BuildingsState::instance.buildings[buildingID].buildingType + == OpenSHC::Map::Buildings::BT_KILLINGPIT) { + DAT_BuildingsState::instance.buildings[buildingID].killingPitField = 0; } } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 3de7b9e7d..8a2d73783 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -6061,7 +6061,7 @@ SHC_3BB0A8C1_0x0041A460 | 0.0% | Pending SHC_3BB0A8C1_0x0041A520 | 0.0% | Pending -SHC_3BB0A8C1_0x0041A5C0 | 0.0% | Pending +SHC_3BB0A8C1_0x0041A5C0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0041A5F0 | 100.0% | Reimplemented From 3e6a4218ed796e97444ffed0958f047b19967da4 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:42 +0200 Subject: [PATCH 089/241] reimplement: SHC_3BB0A8C1_0x005011C0 100.00% Reimplemented --- .../Map/Version/UpgradeMapLogicToVersion_125.cpp | 10 +++++----- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/OpenSHC/Map/Version/UpgradeMapLogicToVersion_125.cpp b/src/OpenSHC/Map/Version/UpgradeMapLogicToVersion_125.cpp index 0aeb79a9d..23ef2eba2 100644 --- a/src/OpenSHC/Map/Version/UpgradeMapLogicToVersion_125.cpp +++ b/src/OpenSHC/Map/Version/UpgradeMapLogicToVersion_125.cpp @@ -8,11 +8,11 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x005011C0 void Version::UpgradeMapLogicToVersion_125() { - for (int i = 0; i < 80400; i++) { - if (DAT_TileMapState::instance.HeightLayer[i] == 80) { - DAT_TileMapState::instance.Logic2Layer[i] = 4; - } else if (DAT_TileMapState::instance.HeightLayer[i] == 130) { - DAT_TileMapState::instance.Logic2Layer[i] = 8; + for (int tile = 0; tile < 80400; ++tile) { + if (DAT_TileMapState::instance.HeightLayer[tile] == 80) { + DAT_TileMapState::instance.Logic2Layer[tile] = 4; + } else if (DAT_TileMapState::instance.HeightLayer[tile] == 130) { + DAT_TileMapState::instance.Logic2Layer[tile] = 8; } } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 8a2d73783..3c4f25d4a 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -41515,7 +41515,7 @@ SHC_3BB0A8C1_0x00501180 | 100.0% | Reimplemented SHC_3BB0A8C1_0x005011A0 | 0.0% | Pending -SHC_3BB0A8C1_0x005011C0 | 0.0% | Pending +SHC_3BB0A8C1_0x005011C0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x005011F0 | 0.0% | Pending From 505b1fcf86a828c7d5ce306289de6d34001cbc2b Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:43 +0200 Subject: [PATCH 090/241] reimplement: SHC_3BB0A8C1_0x00501730 100.00% Reimplemented --- .../Map/Version/UpgradeMapLogicToVersion_147.cpp | 10 +++++----- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/OpenSHC/Map/Version/UpgradeMapLogicToVersion_147.cpp b/src/OpenSHC/Map/Version/UpgradeMapLogicToVersion_147.cpp index 616321625..6da9a058c 100644 --- a/src/OpenSHC/Map/Version/UpgradeMapLogicToVersion_147.cpp +++ b/src/OpenSHC/Map/Version/UpgradeMapLogicToVersion_147.cpp @@ -8,11 +8,11 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x00501730 void Version::UpgradeMapLogicToVersion_147() { - for (int _tile = 0; _tile < 80400; _tile++) { - if (156 < DAT_TileMapState::instance.DefaultHeightLayer[_tile]) { - DAT_TileMapState::instance.HeightLayer[_tile] = DAT_TileMapState::instance.HeightLayer[_tile] - + (156 - DAT_TileMapState::instance.DefaultHeightLayer[_tile]); - DAT_TileMapState::instance.DefaultHeightLayer[_tile] = 156; + for (int tile = 0; tile < 80400; ++tile) { + if (DAT_TileMapState::instance.DefaultHeightLayer[tile] > 156) { + DAT_TileMapState::instance.HeightLayer[tile] + += 156 - DAT_TileMapState::instance.DefaultHeightLayer[tile]; + DAT_TileMapState::instance.DefaultHeightLayer[tile] = 156; } } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 3c4f25d4a..1ed15c224 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -41535,7 +41535,7 @@ SHC_3BB0A8C1_0x005016D0 | 0.0% | Pending SHC_3BB0A8C1_0x005016E0 | 0.0% | Pending -SHC_3BB0A8C1_0x00501730 | 0.0% | Pending +SHC_3BB0A8C1_0x00501730 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00501760 | 0.0% | Pending From 8112da92866e1dda2912b67db2493d6e0b65241c Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:43 +0200 Subject: [PATCH 091/241] reimplement: SHC_3BB0A8C1_0x00523E00 100.00% Reimplemented --- .../Map/Version/UpgradeMapTribesStateVersionTo_142.cpp | 8 ++++---- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/OpenSHC/Map/Version/UpgradeMapTribesStateVersionTo_142.cpp b/src/OpenSHC/Map/Version/UpgradeMapTribesStateVersionTo_142.cpp index f0e01abc6..fccf9e164 100644 --- a/src/OpenSHC/Map/Version/UpgradeMapTribesStateVersionTo_142.cpp +++ b/src/OpenSHC/Map/Version/UpgradeMapTribesStateVersionTo_142.cpp @@ -11,10 +11,10 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x00523E00 void Version::UpgradeMapTribesStateVersionTo_142() { - for (int _tribeID = 1; _tribeID < 1250; _tribeID++) { - if (DAT_TribesState::instance.tribes[_tribeID].tribeState != 0 - && DAT_TribesState::instance.tribes[_tribeID].attackWave <= 0) { - DAT_TribesState::instance.tribes[_tribeID].tribeBehaviorType = 0; + for (int tribeID = 1; tribeID < 1250; ++tribeID) { + if (DAT_TribesState::instance.tribes[tribeID].tribeState != 0 + && DAT_TribesState::instance.tribes[tribeID].attackWave <= 0) { + DAT_TribesState::instance.tribes[tribeID].tribeBehaviorType = 0; } } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 1ed15c224..423ce5022 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -46865,7 +46865,7 @@ SHC_3BB0A8C1_0x00523A30 | 0.0% | Pending SHC_3BB0A8C1_0x00523B00 | 0.0% | Pending -SHC_3BB0A8C1_0x00523E00 | 0.0% | Pending +SHC_3BB0A8C1_0x00523E00 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00523E30 | 0.0% | Pending From 91e15911bcdb5a14e10abe090fa6fab439d9ee16 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:43 +0200 Subject: [PATCH 092/241] reimplement: SHC_3BB0A8C1_0x00523EB0 100.00% Reimplemented --- .../Map/Version/UpgradeMapTribesStateVersionTo_Unknown2.cpp | 2 +- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/Map/Version/UpgradeMapTribesStateVersionTo_Unknown2.cpp b/src/OpenSHC/Map/Version/UpgradeMapTribesStateVersionTo_Unknown2.cpp index 088d3b49f..853009835 100644 --- a/src/OpenSHC/Map/Version/UpgradeMapTribesStateVersionTo_Unknown2.cpp +++ b/src/OpenSHC/Map/Version/UpgradeMapTribesStateVersionTo_Unknown2.cpp @@ -9,7 +9,7 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x00523EB0 void Version::UpgradeMapTribesStateVersionTo_Unknown2() { - for (int tribeID = 1; tribeID < 1250; tribeID++) { + for (int tribeID = 1; tribeID < 1250; ++tribeID) { if (DAT_TribesState::instance.tribes[tribeID].tribeState != 0) { MACRO_CALL_MEMBER(OpenSHC::Map::Units::TribesState_Func::setWhetherTribeContainsAnyUnits, DAT_TribesState::ptr)(tribeID); diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 423ce5022..dd29a47bf 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -46869,7 +46869,7 @@ SHC_3BB0A8C1_0x00523E00 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00523E30 | 0.0% | Pending -SHC_3BB0A8C1_0x00523EB0 | 0.0% | Pending +SHC_3BB0A8C1_0x00523EB0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00523EF0 | 0.0% | Pending From a249f2a211c2dbb7886fe16a4bb9af6ffd7c7d52 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:44 +0200 Subject: [PATCH 093/241] reimplement: SHC_3BB0A8C1_0x0053B340 53.33% Loop unrolled x3, orig not --- src/OpenSHC/Map/Version/UpgradeMapUnitsTo_112.cpp | 11 +++++------ status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_112.cpp b/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_112.cpp index 9ebfff2af..61e66be18 100644 --- a/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_112.cpp +++ b/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_112.cpp @@ -15,12 +15,11 @@ namespace Map { void Version::UpgradeMapUnitsTo_112() { DAT_CurrentUnitSlotID::instance = 2500; - // fixme: the reimplementation always unrolls this for loop (because 2499/3 = 833), but the original isn't - // unrolled - for (int _unitID = 1; _unitID < 2500; _unitID++) { - if (DAT_UnitsState::instance.units[_unitID].logicalState == Units::ULS_NORMAL) { - DAT_UnitsState::instance.units[_unitID].buildingID - = DAT_UnitsState::instance.units[_unitID].workplaceBuildingID_1; + // fixme: the reimplementation unrolls this loop three times (2499 = 3 * 833), the original does not + for (int unitID = 1; unitID < 2500; ++unitID) { + if (DAT_UnitsState::instance.units[unitID].logicalState == Units::ULS_NORMAL) { + DAT_UnitsState::instance.units[unitID].buildingID + = DAT_UnitsState::instance.units[unitID].workplaceBuildingID_1; } } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index dd29a47bf..3cd015946 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -59627,7 +59627,7 @@ SHC_3BB0A8C1_0x0053B260 | 0.0% | Pending SHC_3BB0A8C1_0x0053B310 | 0.0% | Pending -SHC_3BB0A8C1_0x0053B340 | 0.0% | Pending +SHC_3BB0A8C1_0x0053B340 | 53.3% | Loop unrolled x3, orig not SHC_3BB0A8C1_0x0053B380 | 0.0% | Pending From 05386fbb9a1a8b1e0529ed310bf840f46f3b2f93 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:44 +0200 Subject: [PATCH 094/241] reimplement: SHC_3BB0A8C1_0x0053B310 90.00% Global store scheduling --- src/OpenSHC/Map/Version/UpgradeMapUnitsTo_114.cpp | 6 +++--- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_114.cpp b/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_114.cpp index 4f93debd0..29a2df9f1 100644 --- a/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_114.cpp +++ b/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_114.cpp @@ -15,9 +15,9 @@ namespace Map { void Version::UpgradeMapUnitsTo_114() { DAT_CurrentUnitSlotID::instance = 2500; - for (int i = 1; i < 2500; i++) { - if (DAT_UnitsState::instance.units[i].logicalState == Units::ULS_NORMAL) { - DAT_UnitsState::instance.units[i].calculatedOwnerPlayerIndex = 0; + for (int unitID = 1; unitID < 2500; ++unitID) { + if (DAT_UnitsState::instance.units[unitID].logicalState == Units::ULS_NORMAL) { + DAT_UnitsState::instance.units[unitID].calculatedOwnerPlayerIndex = 0; } } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 3cd015946..d1447b162 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -59625,7 +59625,7 @@ SHC_3BB0A8C1_0x0053B210 | 0.0% | Pending SHC_3BB0A8C1_0x0053B260 | 0.0% | Pending -SHC_3BB0A8C1_0x0053B310 | 0.0% | Pending +SHC_3BB0A8C1_0x0053B310 | 90.0% | Global store scheduling SHC_3BB0A8C1_0x0053B340 | 53.3% | Loop unrolled x3, orig not From b87bd7d7de0366bd343cd68e43afc886152016ff Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:44 +0200 Subject: [PATCH 095/241] reimplement: SHC_3BB0A8C1_0x0053B530 92.31% Global store scheduling --- src/OpenSHC/Map/Version/UpgradeMapUnitsTo_130.cpp | 10 +++++----- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_130.cpp b/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_130.cpp index 96abcb0d1..806588e06 100644 --- a/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_130.cpp +++ b/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_130.cpp @@ -17,11 +17,11 @@ namespace Map { void Version::UpgradeMapUnitsTo_130() { DAT_CurrentUnitSlotID::instance = 2500; - for (int i = 1; i < 2500; i++) { - if (DAT_UnitsState::instance.units[i].logicalState == Units::ULS_NORMAL - && DAT_UnitsState::instance.units[i].unitType == Units::UT_COW) { - DAT_UnitsState::instance.units[i].digTileX__OR__countCurrentlyManningEnginers__OR__forCowsRandomBelow300 - = 0; + for (int unitID = 1; unitID < 2500; ++unitID) { + if (DAT_UnitsState::instance.units[unitID].logicalState == Units::ULS_NORMAL + && DAT_UnitsState::instance.units[unitID].unitType == Units::UT_COW) { + DAT_UnitsState::instance.units[unitID] + .digTileX__OR__countCurrentlyManningEnginers__OR__forCowsRandomBelow300 = 0; } } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index d1447b162..27bce0641 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -59637,7 +59637,7 @@ SHC_3BB0A8C1_0x0053B3E0 | 0.0% | Pending SHC_3BB0A8C1_0x0053B4F0 | 0.0% | Pending -SHC_3BB0A8C1_0x0053B530 | 0.0% | Pending +SHC_3BB0A8C1_0x0053B530 | 92.3% | Global store scheduling SHC_3BB0A8C1_0x0053B570 | 0.0% | Pending From 90bce406b18a07ad3ca456f0af14a51ae9ff68e4 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:45 +0200 Subject: [PATCH 096/241] reimplement: SHC_3BB0A8C1_0x0053B570 90.00% Global store scheduling --- src/OpenSHC/Map/Version/UpgradeMapUnitsTo_149.cpp | 6 +++--- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_149.cpp b/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_149.cpp index 7061514ef..e012bcfc2 100644 --- a/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_149.cpp +++ b/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_149.cpp @@ -15,9 +15,9 @@ namespace Map { void Version::UpgradeMapUnitsTo_149() { DAT_CurrentUnitSlotID::instance = 2500; - for (int _unitID = 1; _unitID < 2500; _unitID++) { - if (DAT_UnitsState::instance.units[_unitID].logicalState == Units::ULS_NORMAL) { - DAT_UnitsState::instance.units[_unitID].shootBeforeStop = 0; + for (int unitID = 1; unitID < 2500; ++unitID) { + if (DAT_UnitsState::instance.units[unitID].logicalState == Units::ULS_NORMAL) { + DAT_UnitsState::instance.units[unitID].shootBeforeStop = 0; } } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 27bce0641..4886c8832 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -59639,7 +59639,7 @@ SHC_3BB0A8C1_0x0053B4F0 | 0.0% | Pending SHC_3BB0A8C1_0x0053B530 | 92.3% | Global store scheduling -SHC_3BB0A8C1_0x0053B570 | 0.0% | Pending +SHC_3BB0A8C1_0x0053B570 | 90.0% | Global store scheduling SHC_3BB0A8C1_0x0053B5A0 | 0.0% | Pending From 661a13b7067f03882a64e4d03c1803016a08e1d7 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:45 +0200 Subject: [PATCH 097/241] reimplement: SHC_3BB0A8C1_0x0053B5E0 90.00% Global store scheduling --- src/OpenSHC/Map/Version/UpgradeMapUnitsTo_155.cpp | 6 +++--- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_155.cpp b/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_155.cpp index ff73ed357..9eb84d620 100644 --- a/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_155.cpp +++ b/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_155.cpp @@ -15,9 +15,9 @@ namespace Map { void Version::UpgradeMapUnitsTo_155() { DAT_CurrentUnitSlotID::instance = 2500; - for (int _unitID = 1; _unitID < 2500; _unitID++) { - if (DAT_UnitsState::instance.units[_unitID].logicalState != Units::ULS_INVISIBLE) { - DAT_UnitsState::instance.units[_unitID].killedFlagUnk = 0; + for (int unitID = 1; unitID < 2500; ++unitID) { + if (DAT_UnitsState::instance.units[unitID].logicalState != Units::ULS_INVISIBLE) { + DAT_UnitsState::instance.units[unitID].killedFlagUnk = 0; } } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 4886c8832..be9f9adb3 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -59643,7 +59643,7 @@ SHC_3BB0A8C1_0x0053B570 | 90.0% | Global store scheduling SHC_3BB0A8C1_0x0053B5A0 | 0.0% | Pending -SHC_3BB0A8C1_0x0053B5E0 | 0.0% | Pending +SHC_3BB0A8C1_0x0053B5E0 | 90.0% | Global store scheduling SHC_3BB0A8C1_0x0053B610 | 0.0% | Pending From da320cd5bfb75f69615b3f3832a910f0fd5f951d Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:46 +0200 Subject: [PATCH 098/241] reimplement: SHC_3BB0A8C1_0x0041A710 100.00% Reimplemented --- src/OpenSHC/Map/Version/UpgradeOutpostField.cpp | 14 +++++++------- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/OpenSHC/Map/Version/UpgradeOutpostField.cpp b/src/OpenSHC/Map/Version/UpgradeOutpostField.cpp index de8cc321b..d5cdeddf7 100644 --- a/src/OpenSHC/Map/Version/UpgradeOutpostField.cpp +++ b/src/OpenSHC/Map/Version/UpgradeOutpostField.cpp @@ -15,13 +15,13 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x0041A710 void Version::UpgradeOutpostField() { - for (int _buildingID = 1; _buildingID < 2000; _buildingID++) { - if ((DAT_BuildingsState::instance.buildings[_buildingID].logicalState != ((BuildingLogicalState)0)) - && ((DAT_BuildingsState::instance.buildings[_buildingID].buildingType - == OpenSHC::Map::Buildings::BT_OUTPOST_EUROPEAN) - || (DAT_BuildingsState::instance.buildings[_buildingID].buildingType - == OpenSHC::Map::Buildings::BT_OUTPOST_ARABIAN))) { - DAT_BuildingsState::instance.buildings[_buildingID].randomOutpostField = 0; + for (int buildingID = 1; buildingID < 2000; ++buildingID) { + if (DAT_BuildingsState::instance.buildings[buildingID].logicalState != (BuildingLogicalState)0 + && (DAT_BuildingsState::instance.buildings[buildingID].buildingType + == OpenSHC::Map::Buildings::BT_OUTPOST_EUROPEAN + || DAT_BuildingsState::instance.buildings[buildingID].buildingType + == OpenSHC::Map::Buildings::BT_OUTPOST_ARABIAN)) { + DAT_BuildingsState::instance.buildings[buildingID].randomOutpostField = 0; } } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index be9f9adb3..05a145607 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -6071,7 +6071,7 @@ SHC_3BB0A8C1_0x0041A650 | 0.0% | Pending SHC_3BB0A8C1_0x0041A680 | 0.0% | Pending -SHC_3BB0A8C1_0x0041A710 | 0.0% | Pending +SHC_3BB0A8C1_0x0041A710 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0041A740 | 100.0% | Reimplemented From 38cf78bad4d4e59581f474dce1159f3e065b2ae4 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:46 +0200 Subject: [PATCH 099/241] reimplement: SHC_3BB0A8C1_0x004F3900 100.00% Reimplemented --- src/OpenSHC/Map/Version/UpgradeRemoveRocksBeyond1000.cpp | 4 ++-- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/OpenSHC/Map/Version/UpgradeRemoveRocksBeyond1000.cpp b/src/OpenSHC/Map/Version/UpgradeRemoveRocksBeyond1000.cpp index 2ae7d8c8a..2d15cd8b0 100644 --- a/src/OpenSHC/Map/Version/UpgradeRemoveRocksBeyond1000.cpp +++ b/src/OpenSHC/Map/Version/UpgradeRemoveRocksBeyond1000.cpp @@ -13,9 +13,9 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x004F3900 void Version::UpgradeRemoveRocksBeyond1000() { - for (int i = 2000; i < 4000; i += 1) { + for (int i = 2000; i < 4000; ++i) { MACRO_CALL_MEMBER(OpenSHC::IO::LowLevelMemory_Func::fillMemory_ByteValue, DAT_LowLevelMemory::ptr)( - 32, 0, &DAT_LandscapeState::instance.rocks[i]); + sizeof(DAT_LandscapeState::instance.rocks[i]), 0, &DAT_LandscapeState::instance.rocks[i]); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 05a145607..18af17cfb 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -38589,7 +38589,7 @@ SHC_3BB0A8C1_0x004F3840 | 0.0% | Pending SHC_3BB0A8C1_0x004F38A0 | 0.0% | Pending -SHC_3BB0A8C1_0x004F3900 | 0.0% | Pending +SHC_3BB0A8C1_0x004F3900 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004F3930 | 0.0% | Pending From 389ff52666e9a30cce3601d68a398ebd8040eaba Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:46 +0200 Subject: [PATCH 100/241] reimplement: SHC_3BB0A8C1_0x0041A3F0 100.00% Reimplemented --- .../Map/Version/UpgradeSolitaryMapBuildingField3.cpp | 11 ++++++----- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/OpenSHC/Map/Version/UpgradeSolitaryMapBuildingField3.cpp b/src/OpenSHC/Map/Version/UpgradeSolitaryMapBuildingField3.cpp index 974015a37..ef930a585 100644 --- a/src/OpenSHC/Map/Version/UpgradeSolitaryMapBuildingField3.cpp +++ b/src/OpenSHC/Map/Version/UpgradeSolitaryMapBuildingField3.cpp @@ -16,11 +16,12 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x0041A3F0 void Version::UpgradeSolitaryMapBuildingField3() { - if (DAT_GameSynchronyState::instance.currentGameMode == OpenSHC::Game::GM_SOLITARY) { - for (int _buildingID = 1; _buildingID < 2000; _buildingID++) { - if (DAT_BuildingsState::instance.buildings[_buildingID].logicalState != ((BuildingLogicalState)0)) { - DAT_BuildingsState::instance.buildings[_buildingID].playerColorUnk = 0; - } + if (DAT_GameSynchronyState::instance.currentGameMode != OpenSHC::Game::GM_SOLITARY) { + return; + } + for (int buildingID = 1; buildingID < 2000; ++buildingID) { + if (DAT_BuildingsState::instance.buildings[buildingID].logicalState != (BuildingLogicalState)0) { + DAT_BuildingsState::instance.buildings[buildingID].playerColorUnk = 0; } } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 18af17cfb..85751d715 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -6053,7 +6053,7 @@ SHC_3BB0A8C1_0x0041A390 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0041A3C0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0041A3F0 | 0.0% | Pending +SHC_3BB0A8C1_0x0041A3F0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0041A420 | 0.0% | Pending From 47f56990ef72a258ba4c0f41607bd9e17149b2d5 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:47 +0200 Subject: [PATCH 101/241] reimplement: SHC_3BB0A8C1_0x00500C80 100.00% Reimplemented --- .../WallAndPitchState/resetWallAndPitchState.cpp | 15 ++++++++------- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/OpenSHC/Map/WallAndPitchState/resetWallAndPitchState.cpp b/src/OpenSHC/Map/WallAndPitchState/resetWallAndPitchState.cpp index 3f6880b1b..2cd7df980 100644 --- a/src/OpenSHC/Map/WallAndPitchState/resetWallAndPitchState.cpp +++ b/src/OpenSHC/Map/WallAndPitchState/resetWallAndPitchState.cpp @@ -14,14 +14,15 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x00500C80 void WallAndPitchState::resetWallAndPitchState() { - if ((DAT_GameCore::instance.gameMode_2 != OpenSHC::Game::GM_SKIRMISH_AND_MULTIPLAYER) - && (DAT_GameCore::instance.gameMode_2 != OpenSHC::Game::GM_SIEGE_THAT)) { - this->state = 4; - this->countdown = 400; - this->index = 0; - this->counter = 0; - DAT_UIDragDropDefinedData::instance.MenuView_TriggerInitial = TRUE; + if (DAT_GameCore::instance.gameMode_2 == OpenSHC::Game::GM_SKIRMISH_AND_MULTIPLAYER + || DAT_GameCore::instance.gameMode_2 == OpenSHC::Game::GM_SIEGE_THAT) { + return; } + this->state = 4; + this->countdown = 400; + this->index = 0; + this->counter = 0; + DAT_UIDragDropDefinedData::instance.MenuView_TriggerInitial = TRUE; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 85751d715..0ffeba1eb 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -41473,7 +41473,7 @@ SHC_3BB0A8C1_0x00500BB0 | 0.0% | Pending SHC_3BB0A8C1_0x00500C20 | 0.0% | Pending -SHC_3BB0A8C1_0x00500C80 | 0.0% | Pending +SHC_3BB0A8C1_0x00500C80 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00500CB0 | 0.0% | Pending From 8db98a19dd92f62aede81b8160247aaef5069cc8 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:47 +0200 Subject: [PATCH 102/241] reimplement: SHC_3BB0A8C1_0x00500D30 100.00% Reimplemented --- .../WallAndPitchState/resetWallPlacementInfo.cpp | 15 ++++++++------- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/OpenSHC/Map/WallAndPitchState/resetWallPlacementInfo.cpp b/src/OpenSHC/Map/WallAndPitchState/resetWallPlacementInfo.cpp index c6e948e76..806f75997 100644 --- a/src/OpenSHC/Map/WallAndPitchState/resetWallPlacementInfo.cpp +++ b/src/OpenSHC/Map/WallAndPitchState/resetWallPlacementInfo.cpp @@ -14,14 +14,15 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x00500D30 void WallAndPitchState::resetWallPlacementInfo() { - if ((DAT_GameCore::instance.gameMode_2 != OpenSHC::Game::GM_SKIRMISH_AND_MULTIPLAYER) - && (DAT_GameCore::instance.gameMode_2 != OpenSHC::Game::GM_SIEGE_THAT)) { - this->state = 3; - this->countdown = 400; - this->index = 0; - this->counter = 0; - DAT_UIDragDropDefinedData::instance.MenuView_TriggerInitial = TRUE; + if (DAT_GameCore::instance.gameMode_2 == OpenSHC::Game::GM_SKIRMISH_AND_MULTIPLAYER + || DAT_GameCore::instance.gameMode_2 == OpenSHC::Game::GM_SIEGE_THAT) { + return; } + this->state = 3; + this->countdown = 400; + this->index = 0; + this->counter = 0; + DAT_UIDragDropDefinedData::instance.MenuView_TriggerInitial = TRUE; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 0ffeba1eb..34c09d9d9 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -41479,7 +41479,7 @@ SHC_3BB0A8C1_0x00500CB0 | 0.0% | Pending SHC_3BB0A8C1_0x00500CF0 | 0.0% | Pending -SHC_3BB0A8C1_0x00500D30 | 0.0% | Pending +SHC_3BB0A8C1_0x00500D30 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00500D60 | 0.0% | Pending From 80acd6d8c7fb5e0020ab4b0bcc2e7089b2dc4874 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 00:50:47 +0200 Subject: [PATCH 103/241] reimplement: SHC_3BB0A8C1_0x0052B9F0 100.00% Reimplemented --- src/OpenSHC/Map/WildlifeState/clearWildlifeState.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/OpenSHC/Map/WildlifeState/clearWildlifeState.cpp b/src/OpenSHC/Map/WildlifeState/clearWildlifeState.cpp index d6ba10c80..798db1a8c 100644 --- a/src/OpenSHC/Map/WildlifeState/clearWildlifeState.cpp +++ b/src/OpenSHC/Map/WildlifeState/clearWildlifeState.cpp @@ -2,6 +2,7 @@ #include "OpenSHC/Map/WildlifeState.func.hpp" #include "OpenSHC/Globals/DAT_LowLevelMemory.hpp" +#include "OpenSHC/Globals/DAT_WildlifeState.hpp" namespace OpenSHC { namespace Map { @@ -10,7 +11,7 @@ namespace Map { void WildlifeState::clearWildlifeState() { MACRO_CALL_MEMBER(OpenSHC::IO::LowLevelMemory_Func::fillMemory_ByteValue, DAT_LowLevelMemory::ptr)( - 256000, 0, &this->grid[0][0]); + sizeof(DAT_WildlifeState::instance.grid), 0, DAT_WildlifeState::instance.grid); } } From 18c4d8a6550c9f69822b0a511659a07b83226060 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:07 +0200 Subject: [PATCH 104/241] reimplement: SHC_3BB0A8C1_0x004092E0 100.00% Reimplemented --- .../Rendering/ViewportRenderState/computeTileXOffset.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/Rendering/ViewportRenderState/computeTileXOffset.cpp b/src/OpenSHC/Rendering/ViewportRenderState/computeTileXOffset.cpp index 91e7004da..6a27369f7 100644 --- a/src/OpenSHC/Rendering/ViewportRenderState/computeTileXOffset.cpp +++ b/src/OpenSHC/Rendering/ViewportRenderState/computeTileXOffset.cpp @@ -4,9 +4,9 @@ namespace OpenSHC { namespace Rendering { // FUNCTION: STRONGHOLDCRUSADER 0x004092E0 - int ViewportRenderState::computeTileXOffset(int param_1, int param_2) + int ViewportRenderState::computeTileXOffset(int tile, int y) { - return param_1 - this->translationMatrix[param_2].addXgetTile; + return tile - this->translationMatrix[y].addXgetTile; } } From 22579cb58438a2855880f2f1f58eca12229aef8b Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:07 +0200 Subject: [PATCH 105/241] reimplement: SHC_3BB0A8C1_0x00401000 100.00% Reimplemented --- src/OpenSHC/Rendering/ViewportRenderState/xyAreValid.cpp | 2 +- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/Rendering/ViewportRenderState/xyAreValid.cpp b/src/OpenSHC/Rendering/ViewportRenderState/xyAreValid.cpp index 7e538608b..6e1b8ce4f 100644 --- a/src/OpenSHC/Rendering/ViewportRenderState/xyAreValid.cpp +++ b/src/OpenSHC/Rendering/ViewportRenderState/xyAreValid.cpp @@ -10,7 +10,7 @@ namespace Rendering { // FUNCTION: STRONGHOLDCRUSADER 0x00401000 BOOLEnum ViewportRenderState::xyAreValid(uint x, uint y) { - return ((x <= 399) && (y <= 399)) && this->DAT_BinaryTileMap400x400[y * 400 + x] != 0; + return x <= 399 && y <= 399 && this->DAT_BinaryTileMap400x400[y * 400 + x] != 0; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 34c09d9d9..5039d1765 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -381,7 +381,7 @@ SHC_3BB0A8C1_0x00400260 | 0.0% | Pending SHC_3BB0A8C1_0x00400288 | 0.0% | Pending -SHC_3BB0A8C1_0x00401000 | 0.0% | Pending +SHC_3BB0A8C1_0x00401000 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00401040 | 100.0% | Reimplemented From c470645c40c06c06fca99c78fef361cf714925f2 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:07 +0200 Subject: [PATCH 106/241] reimplement: SHC_3BB0A8C1_0x00467F60 100.00% Reimplemented --- .../WindowInformation/storeWindowRectangleInfoUnk.cpp | 10 +++++----- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/OpenSHC/Rendering/WindowInformation/storeWindowRectangleInfoUnk.cpp b/src/OpenSHC/Rendering/WindowInformation/storeWindowRectangleInfoUnk.cpp index 3337070c2..9ac90b8f8 100644 --- a/src/OpenSHC/Rendering/WindowInformation/storeWindowRectangleInfoUnk.cpp +++ b/src/OpenSHC/Rendering/WindowInformation/storeWindowRectangleInfoUnk.cpp @@ -4,12 +4,12 @@ namespace OpenSHC { namespace Rendering { // FUNCTION: STRONGHOLDCRUSADER 0x00467F60 - void WindowInformation::storeWindowRectangleInfoUnk(LONG param_1, LONG param_2, LONG param_3, LONG param_4) + void WindowInformation::storeWindowRectangleInfoUnk(LONG left, LONG right, LONG top, LONG bottom) { - this->RECT_SomeGameWindowRectUnk.left = param_1; - this->RECT_SomeGameWindowRectUnk.top = param_3; - this->RECT_SomeGameWindowRectUnk.right = param_2; - this->RECT_SomeGameWindowRectUnk.bottom = param_4; + this->RECT_SomeGameWindowRectUnk.left = left; + this->RECT_SomeGameWindowRectUnk.top = top; + this->RECT_SomeGameWindowRectUnk.right = right; + this->RECT_SomeGameWindowRectUnk.bottom = bottom; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 5039d1765..babeaff32 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -20059,7 +20059,7 @@ SHC_3BB0A8C1_0x00467EC0 | 0.0% | Pending SHC_3BB0A8C1_0x00467F50 | 0.0% | Pending -SHC_3BB0A8C1_0x00467F60 | 0.0% | Pending +SHC_3BB0A8C1_0x00467F60 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00467F80 | 0.0% | Pending From dcf495550c24a690355c1dc5e4fb2cd5e8e6871f Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:08 +0200 Subject: [PATCH 107/241] reimplement: SHC_3BB0A8C1_0x004285C0 100.00% Reimplemented --- src/OpenSHC/Synchrony/Actions/RemovePositionOfPlayer.cpp | 6 +++--- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/OpenSHC/Synchrony/Actions/RemovePositionOfPlayer.cpp b/src/OpenSHC/Synchrony/Actions/RemovePositionOfPlayer.cpp index 503542eb9..9d2d66d38 100644 --- a/src/OpenSHC/Synchrony/Actions/RemovePositionOfPlayer.cpp +++ b/src/OpenSHC/Synchrony/Actions/RemovePositionOfPlayer.cpp @@ -8,9 +8,9 @@ namespace Synchrony { // FUNCTION: STRONGHOLDCRUSADER 0x004285C0 void Actions::RemovePositionOfPlayer(int playerID) { - for (int _position = 0; _position < 8; _position++) { - if ((char)DAT_GameSynchronyState::instance.playerPositionsArray[_position] + 1 == playerID) { - DAT_GameSynchronyState::instance.playerPositionsArray[_position] = 0xf6; + for (int position = 0; position < 8; ++position) { + if ((char)DAT_GameSynchronyState::instance.playerPositionsArray[position] + 1 == playerID) { + DAT_GameSynchronyState::instance.playerPositionsArray[position] = 0xf6; } } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index babeaff32..0492c3841 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -6867,7 +6867,7 @@ SHC_3BB0A8C1_0x00428480 | 0.0% | Pending SHC_3BB0A8C1_0x00428590 | 0.0% | Pending -SHC_3BB0A8C1_0x004285C0 | 0.0% | Pending +SHC_3BB0A8C1_0x004285C0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004285F0 | 0.0% | Pending From c2a4806a186d42fb59a83cbbf423358a76aa7be1 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:08 +0200 Subject: [PATCH 108/241] reimplement: SHC_3BB0A8C1_0x004800B0 100.00% Reimplemented --- .../Synchrony/GameSynchronyState/clearGameCommandEntry.cpp | 2 +- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/Synchrony/GameSynchronyState/clearGameCommandEntry.cpp b/src/OpenSHC/Synchrony/GameSynchronyState/clearGameCommandEntry.cpp index 779e44e04..096cf171c 100644 --- a/src/OpenSHC/Synchrony/GameSynchronyState/clearGameCommandEntry.cpp +++ b/src/OpenSHC/Synchrony/GameSynchronyState/clearGameCommandEntry.cpp @@ -11,7 +11,7 @@ namespace Synchrony { { if (gameCommandID < 200) { MACRO_CALL_MEMBER(OpenSHC::IO::LowLevelMemory_Func::fillMemory_ByteValue, DAT_LowLevelMemory::ptr)( - 0x4f8, '\0', (void*)((int)(this->DAT_GameCommandArray + gameCommandID))); + sizeof(this->DAT_GameCommandArray[gameCommandID]), 0, &this->DAT_GameCommandArray[gameCommandID]); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 0492c3841..08bcff025 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -22417,7 +22417,7 @@ SHC_3BB0A8C1_0x0047FFE0 | 0.0% | Pending SHC_3BB0A8C1_0x00480050 | 0.0% | Pending -SHC_3BB0A8C1_0x004800B0 | 0.0% | Pending +SHC_3BB0A8C1_0x004800B0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004800E0 | 0.0% | Pending From adc542abebb4933e810ee02c0239b30effbaa90d Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:09 +0200 Subject: [PATCH 109/241] reimplement: SHC_3BB0A8C1_0x0047E7E0 100.00% Reimplemented --- .../compressOrCreateLengthPrefixedPacketUnk.cpp | 5 +---- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/OpenSHC/Synchrony/GameSynchronyState/compressOrCreateLengthPrefixedPacketUnk.cpp b/src/OpenSHC/Synchrony/GameSynchronyState/compressOrCreateLengthPrefixedPacketUnk.cpp index 8c5d4c488..657e4df40 100644 --- a/src/OpenSHC/Synchrony/GameSynchronyState/compressOrCreateLengthPrefixedPacketUnk.cpp +++ b/src/OpenSHC/Synchrony/GameSynchronyState/compressOrCreateLengthPrefixedPacketUnk.cpp @@ -9,10 +9,7 @@ namespace Synchrony { // FUNCTION: STRONGHOLDCRUSADER 0x0047E7E0 int GameSynchronyState::compressOrCreateLengthPrefixedPacketUnk(int size, char* src, void* dst) { - int iVar1; - - iVar1 = MACRO_CALL_MEMBER(OpenSHC::IO::DecoderState_Func::compressRLE, DAT_DecoderState::ptr)(src, dst, size); - return iVar1; + return MACRO_CALL_MEMBER(OpenSHC::IO::DecoderState_Func::compressRLE, DAT_DecoderState::ptr)(src, dst, size); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 08bcff025..1c7911375 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -22373,7 +22373,7 @@ SHC_3BB0A8C1_0x0047E5B0 | 0.0% | Pending SHC_3BB0A8C1_0x0047E5D0 | 0.0% | Pending -SHC_3BB0A8C1_0x0047E7E0 | 0.0% | Pending +SHC_3BB0A8C1_0x0047E7E0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0047E800 | 0.0% | Pending From eebdae7a24cfd86461c7b17a95488edf7aae11ba Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:09 +0200 Subject: [PATCH 110/241] reimplement: SHC_3BB0A8C1_0x0047EEB0 100.00% Reimplemented --- .../GameSynchronyState/computeSomeHashOnUnitArray.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/Synchrony/GameSynchronyState/computeSomeHashOnUnitArray.cpp b/src/OpenSHC/Synchrony/GameSynchronyState/computeSomeHashOnUnitArray.cpp index 30e1c1b4b..a7536d067 100644 --- a/src/OpenSHC/Synchrony/GameSynchronyState/computeSomeHashOnUnitArray.cpp +++ b/src/OpenSHC/Synchrony/GameSynchronyState/computeSomeHashOnUnitArray.cpp @@ -10,8 +10,9 @@ namespace Synchrony { // FUNCTION: STRONGHOLDCRUSADER 0x0047EEB0 int GameSynchronyState::computeSomeHashOnUnitArray() { - return MACRO_CALL_MEMBER(OpenSHC::Map::Navigation::DirectionAlgorithmState_Func::computeHash, - DAT_DirectionAlgorithmState::ptr)(2920000, (int*)((int)(DAT_UnitsState::instance.units))); + return MACRO_CALL_MEMBER( + OpenSHC::Map::Navigation::DirectionAlgorithmState_Func::computeHash, DAT_DirectionAlgorithmState::ptr)( + sizeof(DAT_UnitsState::instance.units), (int*)DAT_UnitsState::instance.units); } } From 562df81efcdf354af18836de98b07215a0ca42e4 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:09 +0200 Subject: [PATCH 111/241] reimplement: SHC_3BB0A8C1_0x0047E800 100.00% Reimplemented --- .../GameSynchronyState/decompressTooLongPacketData.cpp | 6 +++--- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/OpenSHC/Synchrony/GameSynchronyState/decompressTooLongPacketData.cpp b/src/OpenSHC/Synchrony/GameSynchronyState/decompressTooLongPacketData.cpp index ae3c59f29..6574e659e 100644 --- a/src/OpenSHC/Synchrony/GameSynchronyState/decompressTooLongPacketData.cpp +++ b/src/OpenSHC/Synchrony/GameSynchronyState/decompressTooLongPacketData.cpp @@ -11,10 +11,10 @@ namespace Synchrony { // FUNCTION: STRONGHOLDCRUSADER 0x0047E800 void GameSynchronyState::decompressTooLongPacketData(byte* source, byte* destination) { - size_t _size = MACRO_CALL_MEMBER(OpenSHC::IO::DecoderState_Func::decompressRLE, DAT_DecoderState::ptr)( - (char*)source, (char*)((int)(this->DAT_PacketDecodingDestination))); + size_t const size = MACRO_CALL_MEMBER(OpenSHC::IO::DecoderState_Func::decompressRLE, DAT_DecoderState::ptr)( + (char*)source, (char*)this->DAT_PacketDecodingDestination); MACRO_CALL_MEMBER(OpenSHC::IO::LowLevelMemory_Func::copyData, DAT_LowLevelMemory::ptr)( - _size, (void*)((int)(this->DAT_PacketDecodingDestination)), destination); + size, this->DAT_PacketDecodingDestination, destination); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 1c7911375..26485d1d8 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -22375,7 +22375,7 @@ SHC_3BB0A8C1_0x0047E5D0 | 0.0% | Pending SHC_3BB0A8C1_0x0047E7E0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0047E800 | 0.0% | Pending +SHC_3BB0A8C1_0x0047E800 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0047E830 | 0.0% | Pending From cc61beb3ded2a09cf037fe4e3d9ac6e9316da7cd Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:10 +0200 Subject: [PATCH 112/241] reimplement: SHC_3BB0A8C1_0x00490340 100.00% Reimplemented --- .../throttledMultiplayerSyncUpdate.cpp | 17 ++++++++++------- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/OpenSHC/Synchrony/GameSynchronyState/throttledMultiplayerSyncUpdate.cpp b/src/OpenSHC/Synchrony/GameSynchronyState/throttledMultiplayerSyncUpdate.cpp index 83e765395..0c27a7ecc 100644 --- a/src/OpenSHC/Synchrony/GameSynchronyState/throttledMultiplayerSyncUpdate.cpp +++ b/src/OpenSHC/Synchrony/GameSynchronyState/throttledMultiplayerSyncUpdate.cpp @@ -1,6 +1,8 @@ #include "OpenSHC/Synchrony/GameSynchronyState.func.hpp" #include "OpenSHC/Game/GameMode.hpp" +#include "OpenSHC/Globals/DAT_GameSynchronyState.hpp" + namespace OpenSHC { namespace Synchrony { @@ -9,13 +11,14 @@ namespace Synchrony { // FUNCTION: STRONGHOLDCRUSADER 0x00490340 void GameSynchronyState::throttledMultiplayerSyncUpdate() { - if ((this->currentGameMode != OpenSHC::Game::GM_SOLITARY) - && (this->currentGameMode != OpenSHC::Game::GM_SKIRMISH_SINGLE_PLAYER)) { - DWORD _now = timeGetTime(); - if (10 < _now - this->field309_0x109e94) { - this->field309_0x109e94 = _now; - MACRO_CALL_MEMBER(OpenSHC::Synchrony::GameSynchronyState_Func::sendPeriodicSyncMessages, this)(); - } + if (DAT_GameSynchronyState::instance.currentGameMode == OpenSHC::Game::GM_SOLITARY + || DAT_GameSynchronyState::instance.currentGameMode == OpenSHC::Game::GM_SKIRMISH_SINGLE_PLAYER) { + return; + } + DWORD const now = timeGetTime(); + if (now - this->field309_0x109e94 > 10) { + this->field309_0x109e94 = now; + MACRO_CALL_MEMBER(OpenSHC::Synchrony::GameSynchronyState_Func::sendPeriodicSyncMessages, this)(); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 26485d1d8..48ff89114 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -23373,7 +23373,7 @@ SHC_3BB0A8C1_0x00490060 | 0.0% | Pending SHC_3BB0A8C1_0x00490080 | 0.0% | Pending -SHC_3BB0A8C1_0x00490340 | 0.0% | Pending +SHC_3BB0A8C1_0x00490340 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00490380 | 0.0% | Pending From 6c0ecd69b9b6e4d43dd10f35c373ec0bd400c3ff Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:10 +0200 Subject: [PATCH 113/241] reimplement: SHC_3BB0A8C1_0x0042AC60 100.00% Reimplemented --- src/OpenSHC/Synchrony/GetPlayerPosition.cpp | 6 +++--- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/OpenSHC/Synchrony/GetPlayerPosition.cpp b/src/OpenSHC/Synchrony/GetPlayerPosition.cpp index 3036cbf47..fc3a488e1 100644 --- a/src/OpenSHC/Synchrony/GetPlayerPosition.cpp +++ b/src/OpenSHC/Synchrony/GetPlayerPosition.cpp @@ -7,9 +7,9 @@ namespace OpenSHC { // FUNCTION: STRONGHOLDCRUSADER 0x0042AC60 int Synchrony::GetPlayerPosition(int playerID) { - for (int _position = 0; _position < 8; _position++) { - if (DAT_GameSynchronyState::instance.playerPositionsArray[_position] + 1 == playerID) { - return _position + 1; + for (int position = 0; position < 8; ++position) { + if (DAT_GameSynchronyState::instance.playerPositionsArray[position] + 1 == playerID) { + return position + 1; } } return 0; diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 48ff89114..e26a792cb 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -6975,7 +6975,7 @@ SHC_3BB0A8C1_0x0042AC38 | 0.0% | Pending SHC_3BB0A8C1_0x0042AC40 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0042AC60 | 0.0% | Pending +SHC_3BB0A8C1_0x0042AC60 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0042AC70 | 0.0% | Pending From a53da91eb2638dc87ba40696ed9dd44c9d279ae8 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:10 +0200 Subject: [PATCH 114/241] reimplement: SHC_3BB0A8C1_0x004AF680 100.00% Reimplemented --- ...ivateGameSpeedAndResourceLackDisplayElementUnk.cpp | 11 +++++------ status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/OpenSHC/UI/DisplayElements/ActivateGameSpeedAndResourceLackDisplayElementUnk.cpp b/src/OpenSHC/UI/DisplayElements/ActivateGameSpeedAndResourceLackDisplayElementUnk.cpp index 476ad95f5..3df60c966 100644 --- a/src/OpenSHC/UI/DisplayElements/ActivateGameSpeedAndResourceLackDisplayElementUnk.cpp +++ b/src/OpenSHC/UI/DisplayElements/ActivateGameSpeedAndResourceLackDisplayElementUnk.cpp @@ -13,13 +13,12 @@ namespace UI { void ActivateGameSpeedAndResourceLackDisplayElementUnk( DisplayElementID elementId, dword elementState, int displayDuration) { - DisplayElement* _displayElementPtr + DisplayElement* const displayElement = MACRO_CALL(OpenSHC::UI::DisplayElements_Func::FindDisplayElementWithID)(elementId); - if (_displayElementPtr != (DisplayElement*)0x0) { - _displayElementPtr->elementStateUnk_0xc = elementState; - _displayElementPtr->displayDuration_0x14 = displayDuration; - DWORD _currentTime = timeGetTime(); - _displayElementPtr->activationTime_0x10 = _currentTime; + if (displayElement != NULL) { + displayElement->elementStateUnk_0xc = elementState; + displayElement->displayDuration_0x14 = displayDuration; + displayElement->activationTime_0x10 = timeGetTime(); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index e26a792cb..6f88250f8 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -25907,7 +25907,7 @@ SHC_3BB0A8C1_0x004AF630 | 0.0% | Pending SHC_3BB0A8C1_0x004AF650 | 0.0% | Pending -SHC_3BB0A8C1_0x004AF680 | 0.0% | Pending +SHC_3BB0A8C1_0x004AF680 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004AF6B0 | 0.0% | Pending From 3af90050f547b2c994ab649928db5558c50d2003 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:11 +0200 Subject: [PATCH 115/241] reimplement: SHC_3BB0A8C1_0x004DA8A0 100.00% Reimplemented --- src/OpenSHC/UI/Credits/AppendCreditsClearImageCommand.cpp | 4 ++-- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/OpenSHC/UI/Credits/AppendCreditsClearImageCommand.cpp b/src/OpenSHC/UI/Credits/AppendCreditsClearImageCommand.cpp index 98c996fdb..4d4654d65 100644 --- a/src/OpenSHC/UI/Credits/AppendCreditsClearImageCommand.cpp +++ b/src/OpenSHC/UI/Credits/AppendCreditsClearImageCommand.cpp @@ -10,9 +10,9 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x004DA8A0 void AppendCreditsClearImageCommand() { - if (DAT_UnknownBinkCount::instance < 0x120) { + if ((int)DAT_UnknownBinkCount::instance < 288) { DAT_ARRAY_00eb9b68::instance[DAT_UnknownBinkCount::instance].field0_0x0 = 0x28; - DAT_UnknownBinkCount::instance = DAT_UnknownBinkCount::instance + 1; + DAT_UnknownBinkCount::instance += 1; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 6f88250f8..d23a5c46a 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -36153,7 +36153,7 @@ SHC_3BB0A8C1_0x004DA840 | 0.0% | Pending SHC_3BB0A8C1_0x004DA870 | 0.0% | Pending -SHC_3BB0A8C1_0x004DA8A0 | 0.0% | Pending +SHC_3BB0A8C1_0x004DA8A0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004DA8D0 | 0.0% | Pending From aeefc7dd0629648608f28febda08f47f19414e44 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:11 +0200 Subject: [PATCH 116/241] reimplement: SHC_3BB0A8C1_0x004DA7E0 100.00% Reimplemented --- src/OpenSHC/UI/Credits/AppendCreditsCommand.cpp | 8 ++++---- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/OpenSHC/UI/Credits/AppendCreditsCommand.cpp b/src/OpenSHC/UI/Credits/AppendCreditsCommand.cpp index 186b5dbde..1b264e8ff 100644 --- a/src/OpenSHC/UI/Credits/AppendCreditsCommand.cpp +++ b/src/OpenSHC/UI/Credits/AppendCreditsCommand.cpp @@ -8,11 +8,11 @@ namespace UI { namespace Credits { // FUNCTION: STRONGHOLDCRUSADER 0x004DA7E0 - void AppendCreditsCommand(int param_1) + void AppendCreditsCommand(int command) { - if (DAT_UnknownBinkCount::instance < 0x120) { - DAT_ARRAY_00eb9b68::instance[DAT_UnknownBinkCount::instance].field0_0x0 = param_1; - DAT_UnknownBinkCount::instance = DAT_UnknownBinkCount::instance + 1; + if ((int)DAT_UnknownBinkCount::instance < 288) { + DAT_ARRAY_00eb9b68::instance[DAT_UnknownBinkCount::instance].field0_0x0 = command; + DAT_UnknownBinkCount::instance += 1; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index d23a5c46a..8dc8fbd5b 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -36145,7 +36145,7 @@ SHC_3BB0A8C1_0x004DA750 | 0.0% | Pending SHC_3BB0A8C1_0x004DA7A0 | 0.0% | Pending -SHC_3BB0A8C1_0x004DA7E0 | 0.0% | Pending +SHC_3BB0A8C1_0x004DA7E0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004DA810 | 0.0% | Pending From d9dc328137207482eb1ce8b7497392e598e0a305 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:11 +0200 Subject: [PATCH 117/241] reimplement: SHC_3BB0A8C1_0x004DA810 100.00% Reimplemented --- src/OpenSHC/UI/Credits/AppendCreditsListTerminator.cpp | 4 ++-- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/OpenSHC/UI/Credits/AppendCreditsListTerminator.cpp b/src/OpenSHC/UI/Credits/AppendCreditsListTerminator.cpp index d37241ef6..1a4468cc2 100644 --- a/src/OpenSHC/UI/Credits/AppendCreditsListTerminator.cpp +++ b/src/OpenSHC/UI/Credits/AppendCreditsListTerminator.cpp @@ -10,9 +10,9 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x004DA810 void AppendCreditsListTerminator() { - if (DAT_UnknownBinkCount::instance < 288) { + if ((int)DAT_UnknownBinkCount::instance < 288) { DAT_ARRAY_00eb9b68::instance[DAT_UnknownBinkCount::instance].field0_0x0 = 0x20; - DAT_UnknownBinkCount::instance = DAT_UnknownBinkCount::instance + 1; + DAT_UnknownBinkCount::instance += 1; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 8dc8fbd5b..9c41b3a20 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -36147,7 +36147,7 @@ SHC_3BB0A8C1_0x004DA7A0 | 0.0% | Pending SHC_3BB0A8C1_0x004DA7E0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004DA810 | 0.0% | Pending +SHC_3BB0A8C1_0x004DA810 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004DA840 | 0.0% | Pending From c796afe050d8839997f5551c3b8111b15c185dbd Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:12 +0200 Subject: [PATCH 118/241] reimplement: SHC_3BB0A8C1_0x004DA840 100.00% Reimplemented --- src/OpenSHC/UI/Credits/AppendCreditsPauseCommand.cpp | 4 ++-- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/OpenSHC/UI/Credits/AppendCreditsPauseCommand.cpp b/src/OpenSHC/UI/Credits/AppendCreditsPauseCommand.cpp index 24c6e1910..98b285fcc 100644 --- a/src/OpenSHC/UI/Credits/AppendCreditsPauseCommand.cpp +++ b/src/OpenSHC/UI/Credits/AppendCreditsPauseCommand.cpp @@ -10,9 +10,9 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x004DA840 void AppendCreditsPauseCommand() { - if (DAT_UnknownBinkCount::instance < 0x120) { + if ((int)DAT_UnknownBinkCount::instance < 288) { DAT_ARRAY_00eb9b68::instance[DAT_UnknownBinkCount::instance].field0_0x0 = 0x1c; - DAT_UnknownBinkCount::instance = DAT_UnknownBinkCount::instance + 1; + DAT_UnknownBinkCount::instance += 1; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 9c41b3a20..360dbfb48 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -36149,7 +36149,7 @@ SHC_3BB0A8C1_0x004DA7E0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004DA810 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004DA840 | 0.0% | Pending +SHC_3BB0A8C1_0x004DA840 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004DA870 | 0.0% | Pending From 87cad0618971b7ad2f04374f848db9cf69c733b5 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:12 +0200 Subject: [PATCH 119/241] reimplement: SHC_3BB0A8C1_0x004DA870 100.00% Reimplemented --- src/OpenSHC/UI/Credits/AppendCreditsSegmentEndCommand.cpp | 4 ++-- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/OpenSHC/UI/Credits/AppendCreditsSegmentEndCommand.cpp b/src/OpenSHC/UI/Credits/AppendCreditsSegmentEndCommand.cpp index 69acf315b..009b7c581 100644 --- a/src/OpenSHC/UI/Credits/AppendCreditsSegmentEndCommand.cpp +++ b/src/OpenSHC/UI/Credits/AppendCreditsSegmentEndCommand.cpp @@ -10,9 +10,9 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x004DA870 void AppendCreditsSegmentEndCommand() { - if (DAT_UnknownBinkCount::instance < 0x120) { + if ((int)DAT_UnknownBinkCount::instance < 288) { DAT_ARRAY_00eb9b68::instance[DAT_UnknownBinkCount::instance].field0_0x0 = 0x1f; - DAT_UnknownBinkCount::instance = DAT_UnknownBinkCount::instance + 1; + DAT_UnknownBinkCount::instance += 1; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 360dbfb48..f45980874 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -36151,7 +36151,7 @@ SHC_3BB0A8C1_0x004DA810 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004DA840 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004DA870 | 0.0% | Pending +SHC_3BB0A8C1_0x004DA870 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004DA8A0 | 100.0% | Reimplemented From 1886f3aa5d29ed6ed29cdde58745f2c658e15b5b Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:13 +0200 Subject: [PATCH 120/241] reimplement: SHC_3BB0A8C1_0x004DABF0 100.00% Reimplemented --- .../UI/Credits/AppendCreditsSoundStreamCommand.cpp | 10 +++++----- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/OpenSHC/UI/Credits/AppendCreditsSoundStreamCommand.cpp b/src/OpenSHC/UI/Credits/AppendCreditsSoundStreamCommand.cpp index f5f6822c2..3fd969984 100644 --- a/src/OpenSHC/UI/Credits/AppendCreditsSoundStreamCommand.cpp +++ b/src/OpenSHC/UI/Credits/AppendCreditsSoundStreamCommand.cpp @@ -11,12 +11,12 @@ namespace UI { using OpenSHC::Audio::MSS::enums::SHC_SoundStream; // FUNCTION: STRONGHOLDCRUSADER 0x004DABF0 - void AppendCreditsSoundStreamCommand(int param_1, SHC_SoundStream param_2) + void AppendCreditsSoundStreamCommand(int command, SHC_SoundStream soundStream) { - if (DAT_UnknownBinkCount::instance < 0x120) { - DAT_ARRAY_00eb9b68::instance[DAT_UnknownBinkCount::instance].field0_0x0 = param_1; - DAT_ARRAY_00eb9b68::instance[DAT_UnknownBinkCount::instance].soundStream = param_2; - DAT_UnknownBinkCount::instance = DAT_UnknownBinkCount::instance + 1; + if ((int)DAT_UnknownBinkCount::instance < 288) { + DAT_ARRAY_00eb9b68::instance[DAT_UnknownBinkCount::instance].field0_0x0 = command; + DAT_ARRAY_00eb9b68::instance[DAT_UnknownBinkCount::instance].soundStream = soundStream; + DAT_UnknownBinkCount::instance += 1; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index f45980874..e1c2dace5 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -36171,7 +36171,7 @@ SHC_3BB0A8C1_0x004DAB80 | 0.0% | Pending SHC_3BB0A8C1_0x004DABB0 | 0.0% | Pending -SHC_3BB0A8C1_0x004DABF0 | 0.0% | Pending +SHC_3BB0A8C1_0x004DABF0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004DAC30 | 0.0% | Pending From 4745c9a4431e5736b79589cc8bb2dbf72a92c6bb Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:13 +0200 Subject: [PATCH 121/241] reimplement: SHC_3BB0A8C1_0x004AF630 100.00% Reimplemented --- .../UI/DisplayElements/FindDisplayElementWithID.cpp | 10 +++++----- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/OpenSHC/UI/DisplayElements/FindDisplayElementWithID.cpp b/src/OpenSHC/UI/DisplayElements/FindDisplayElementWithID.cpp index 46f425739..1541c48e8 100644 --- a/src/OpenSHC/UI/DisplayElements/FindDisplayElementWithID.cpp +++ b/src/OpenSHC/UI/DisplayElements/FindDisplayElementWithID.cpp @@ -12,11 +12,11 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x004AF630 DisplayElement* FindDisplayElementWithID(int elementID) { - DisplayElement* _pCurrent = DAT_PointerToDisplayElementStackTop::instance; - while (_pCurrent != NULL) { - if (_pCurrent->elementID_0x8 == elementID) - return _pCurrent; - _pCurrent = _pCurrent->nextDisplayElement_0x20; + for (DisplayElement* element = DAT_PointerToDisplayElementStackTop::instance; element != NULL; + element = element->nextDisplayElement_0x20) { + if (element->elementID_0x8 == elementID) { + return element; + } } return NULL; } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index e1c2dace5..704cd1649 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -25903,7 +25903,7 @@ SHC_3BB0A8C1_0x004AF4C0 | 0.0% | Pending SHC_3BB0A8C1_0x004AF5E0 | 0.0% | Pending -SHC_3BB0A8C1_0x004AF630 | 0.0% | Pending +SHC_3BB0A8C1_0x004AF630 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004AF650 | 0.0% | Pending From ec82404cee39a74923f7425a699725d7652d3ded Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:13 +0200 Subject: [PATCH 122/241] reimplement: SHC_3BB0A8C1_0x0044B7D0 100.00% Reimplemented --- src/OpenSHC/UI/GreatestLord/IfAiGreatestLordGetAiType.cpp | 7 +++---- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/OpenSHC/UI/GreatestLord/IfAiGreatestLordGetAiType.cpp b/src/OpenSHC/UI/GreatestLord/IfAiGreatestLordGetAiType.cpp index 0605a8412..58c519aa6 100644 --- a/src/OpenSHC/UI/GreatestLord/IfAiGreatestLordGetAiType.cpp +++ b/src/OpenSHC/UI/GreatestLord/IfAiGreatestLordGetAiType.cpp @@ -12,10 +12,9 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x0044B7D0 int GreatestLord::IfAiGreatestLordGetAiType() { - int _highestRankingPlayer = MACRO_CALL(OpenSHC::UI::GreatestLord_Func::GetPlayerAtRank)(0); - if ((_highestRankingPlayer != 0) - && (DAT_GameSynchronyState::instance.currentAIArray[_highestRankingPlayer] != 0)) { - return DAT_GameState::instance.playerDataArray[_highestRankingPlayer].aiType - 1; + int const playerID = MACRO_CALL(OpenSHC::UI::GreatestLord_Func::GetPlayerAtRank)(0); + if (playerID != 0 && DAT_GameSynchronyState::instance.currentAIArray[playerID] != 0) { + return DAT_GameState::instance.playerDataArray[playerID].aiType - 1; } return 0; } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 704cd1649..914c59196 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -16867,7 +16867,7 @@ SHC_3BB0A8C1_0x0044B680 | 0.0% | Pending SHC_3BB0A8C1_0x0044B760 | 0.0% | Pending -SHC_3BB0A8C1_0x0044B7D0 | 0.0% | Pending +SHC_3BB0A8C1_0x0044B7D0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0044B800 | 0.0% | Pending From 27c2d3b0c0978b337a268e1b0e83da9818340f52 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:14 +0200 Subject: [PATCH 123/241] reimplement: SHC_3BB0A8C1_0x00427210 100.00% Reimplemented --- .../Helpers/AModalDialogIsActiveButIsNotQuitting.cpp | 11 +++++------ status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/OpenSHC/UI/Helpers/AModalDialogIsActiveButIsNotQuitting.cpp b/src/OpenSHC/UI/Helpers/AModalDialogIsActiveButIsNotQuitting.cpp index ea6078cca..70f48c274 100644 --- a/src/OpenSHC/UI/Helpers/AModalDialogIsActiveButIsNotQuitting.cpp +++ b/src/OpenSHC/UI/Helpers/AModalDialogIsActiveButIsNotQuitting.cpp @@ -13,12 +13,11 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x00427210 BOOLEnum Helpers::AModalDialogIsActiveButIsNotQuitting() { - if ((((DAT_MenuModalComposition1::instance.activeModalDialogID != OpenSHC::UI::Enums::MMT_NONE) - && (DAT_MenuModalComposition1::instance.activeModalDialogID - != OpenSHC::UI::Enums::MMT_BASIC_AI_LORD_SELECT)) - && (DAT_MenuModalComposition1::instance.activeModalDialogID - != OpenSHC::UI::Enums::MMT_EXTENDED_AI_LORD_SELECT)) - && (DAT_MenuModalComposition1::instance.activeModalDialogID != OpenSHC::UI::Enums::MMT_ROUNDTABLE)) { + if (DAT_MenuModalComposition1::instance.activeModalDialogID != OpenSHC::UI::Enums::MMT_NONE + && DAT_MenuModalComposition1::instance.activeModalDialogID != OpenSHC::UI::Enums::MMT_BASIC_AI_LORD_SELECT + && DAT_MenuModalComposition1::instance.activeModalDialogID + != OpenSHC::UI::Enums::MMT_EXTENDED_AI_LORD_SELECT + && DAT_MenuModalComposition1::instance.activeModalDialogID != OpenSHC::UI::Enums::MMT_ROUNDTABLE) { return TRUE; } return FALSE; diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 914c59196..039208128 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -6805,7 +6805,7 @@ SHC_3BB0A8C1_0x00427180 | 0.0% | Pending SHC_3BB0A8C1_0x004271E0 | 0.0% | Pending -SHC_3BB0A8C1_0x00427210 | 0.0% | Pending +SHC_3BB0A8C1_0x00427210 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00427240 | 0.0% | Pending From 81a05474d88480f4b284b6a622ae0ab8cceef436 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:14 +0200 Subject: [PATCH 124/241] reimplement: SHC_3BB0A8C1_0x004AF650 100.00% Reimplemented --- ...heckDisplayElementByIDAndSetForUnlimitedDisplay.cpp | 10 +++++----- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/OpenSHC/UI/DisplayElements/CheckDisplayElementByIDAndSetForUnlimitedDisplay.cpp b/src/OpenSHC/UI/DisplayElements/CheckDisplayElementByIDAndSetForUnlimitedDisplay.cpp index 4cbb598c7..9b155c257 100644 --- a/src/OpenSHC/UI/DisplayElements/CheckDisplayElementByIDAndSetForUnlimitedDisplay.cpp +++ b/src/OpenSHC/UI/DisplayElements/CheckDisplayElementByIDAndSetForUnlimitedDisplay.cpp @@ -17,14 +17,14 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x004AF650 void CheckDisplayElementByIDAndSetForUnlimitedDisplay(DisplayElementID displayElementID, dword elementState) { - DisplayElement* _displayElementPtr + DisplayElement* const displayElement = MACRO_CALL(OpenSHC::UI::DisplayElements_Func::FindDisplayElementWithID)(displayElementID); - if (_displayElementPtr != NULL) { - if (_displayElementPtr->elementStateUnk_0xc != elementState) { + if (displayElement != NULL) { + if (displayElement->elementStateUnk_0xc != elementState) { BOOL_RelatedToInitialGranaryAndKeepPlacement::instance = FALSE; } - _displayElementPtr->elementStateUnk_0xc = elementState; - _displayElementPtr->displayDuration_0x14 = -1; + displayElement->elementStateUnk_0xc = elementState; + displayElement->displayDuration_0x14 = -1; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 039208128..969573b2d 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -25905,7 +25905,7 @@ SHC_3BB0A8C1_0x004AF5E0 | 0.0% | Pending SHC_3BB0A8C1_0x004AF630 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004AF650 | 0.0% | Pending +SHC_3BB0A8C1_0x004AF650 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004AF680 | 100.0% | Reimplemented From c2b871fd8bacc8f22410e122fba5d57cd793c99d Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:15 +0200 Subject: [PATCH 125/241] reimplement: SHC_3BB0A8C1_0x004650C0 100.00% Reimplemented --- src/OpenSHC/UI/Helpers/CheckGoldResource.cpp | 14 ++++++-------- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/OpenSHC/UI/Helpers/CheckGoldResource.cpp b/src/OpenSHC/UI/Helpers/CheckGoldResource.cpp index 1be7983c6..66b2125ef 100644 --- a/src/OpenSHC/UI/Helpers/CheckGoldResource.cpp +++ b/src/OpenSHC/UI/Helpers/CheckGoldResource.cpp @@ -10,17 +10,15 @@ namespace UI { using OpenSHC::WindowsHelper::Enums::BOOLEnum; // FUNCTION: STRONGHOLDCRUSADER 0x004650C0 - BOOLEnum Helpers::CheckGoldResource(int param_1) + BOOLEnum Helpers::CheckGoldResource(int unitIndex) { - int iVar1; - - iVar1 = 0; - if (param_1 == 5) { - iVar1 = 0x1e; + int requiredGold = 0; + if (unitIndex == 5) { + requiredGold = 30; } return DAT_GameState::instance.playerDataArray[DAT_GameSynchronyState::instance.currentPlayerSlotID] - .currentResources[0xf] - >= iVar1; + .currentResources[OpenSHC::Game::Resources::RT_GOLD] + >= requiredGold; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 969573b2d..dda132881 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -19861,7 +19861,7 @@ SHC_3BB0A8C1_0x00465080 | 0.0% | Pending SHC_3BB0A8C1_0x004650A0 | 0.0% | Pending -SHC_3BB0A8C1_0x004650C0 | 0.0% | Pending +SHC_3BB0A8C1_0x004650C0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004650F0 | 0.0% | Pending From 6367fa70b07a0f1dd5d7702eb274acaf0fc6b720 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:15 +0200 Subject: [PATCH 126/241] reimplement: SHC_3BB0A8C1_0x00465080 100.00% Reimplemented --- src/OpenSHC/UI/Helpers/CheckIfEnoughGoldForLadderman.cpp | 5 +++-- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/OpenSHC/UI/Helpers/CheckIfEnoughGoldForLadderman.cpp b/src/OpenSHC/UI/Helpers/CheckIfEnoughGoldForLadderman.cpp index a2b554a78..5ea25ac2e 100644 --- a/src/OpenSHC/UI/Helpers/CheckIfEnoughGoldForLadderman.cpp +++ b/src/OpenSHC/UI/Helpers/CheckIfEnoughGoldForLadderman.cpp @@ -11,8 +11,9 @@ namespace UI { void Helpers::CheckIfEnoughGoldForLadderman() { DAT_EnoughGoldForRequestedUnit::instance - = 4 <= DAT_GameState::instance.playerDataArray[DAT_GameSynchronyState::instance.currentPlayerSlotID] - .currentResources[0xf]; + = DAT_GameState::instance.playerDataArray[DAT_GameSynchronyState::instance.currentPlayerSlotID] + .currentResources[OpenSHC::Game::Resources::RT_GOLD] + >= 4; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index dda132881..928b9ffa5 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -19857,7 +19857,7 @@ SHC_3BB0A8C1_0x00464EF0 | 0.0% | Pending SHC_3BB0A8C1_0x00465040 | 0.0% | Pending -SHC_3BB0A8C1_0x00465080 | 0.0% | Pending +SHC_3BB0A8C1_0x00465080 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004650A0 | 0.0% | Pending From 8f84bb7f843ed14eb9717351d165fbde4d89100a Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:15 +0200 Subject: [PATCH 127/241] reimplement: SHC_3BB0A8C1_0x004650A0 100.00% Reimplemented --- src/OpenSHC/UI/Helpers/CheckIfEnoughGoldForMonk.cpp | 5 +++-- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/OpenSHC/UI/Helpers/CheckIfEnoughGoldForMonk.cpp b/src/OpenSHC/UI/Helpers/CheckIfEnoughGoldForMonk.cpp index af06a6304..adfdee6dc 100644 --- a/src/OpenSHC/UI/Helpers/CheckIfEnoughGoldForMonk.cpp +++ b/src/OpenSHC/UI/Helpers/CheckIfEnoughGoldForMonk.cpp @@ -11,8 +11,9 @@ namespace UI { void Helpers::CheckIfEnoughGoldForMonk() { DAT_EnoughGoldForRequestedUnit::instance - = 10 <= DAT_GameState::instance.playerDataArray[DAT_GameSynchronyState::instance.currentPlayerSlotID] - .currentResources[0xf]; + = DAT_GameState::instance.playerDataArray[DAT_GameSynchronyState::instance.currentPlayerSlotID] + .currentResources[OpenSHC::Game::Resources::RT_GOLD] + >= 10; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 928b9ffa5..cda5c8013 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -19859,7 +19859,7 @@ SHC_3BB0A8C1_0x00465040 | 0.0% | Pending SHC_3BB0A8C1_0x00465080 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004650A0 | 0.0% | Pending +SHC_3BB0A8C1_0x004650A0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004650C0 | 100.0% | Reimplemented From f6a78a841ce0d3549453841812149951333cbb41 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:16 +0200 Subject: [PATCH 128/241] reimplement: SHC_3BB0A8C1_0x004650F0 100.00% Reimplemented --- src/OpenSHC/UI/Helpers/CheckIfEnoughGoldForTunneler.cpp | 5 +++-- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/OpenSHC/UI/Helpers/CheckIfEnoughGoldForTunneler.cpp b/src/OpenSHC/UI/Helpers/CheckIfEnoughGoldForTunneler.cpp index 6de671647..986dc27bf 100644 --- a/src/OpenSHC/UI/Helpers/CheckIfEnoughGoldForTunneler.cpp +++ b/src/OpenSHC/UI/Helpers/CheckIfEnoughGoldForTunneler.cpp @@ -11,8 +11,9 @@ namespace UI { void Helpers::CheckIfEnoughGoldForTunneler() { DAT_EnoughGoldForRequestedUnit::instance - = 0x1e <= DAT_GameState::instance.playerDataArray[DAT_GameSynchronyState::instance.currentPlayerSlotID] - .currentResources[0xf]; + = DAT_GameState::instance.playerDataArray[DAT_GameSynchronyState::instance.currentPlayerSlotID] + .currentResources[OpenSHC::Game::Resources::RT_GOLD] + >= 30; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index cda5c8013..9e85a669a 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -19863,7 +19863,7 @@ SHC_3BB0A8C1_0x004650A0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004650C0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004650F0 | 0.0% | Pending +SHC_3BB0A8C1_0x004650F0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00465110 | 0.0% | Pending From 863c21d1a4bff501f78a9d0be69375dba2ec45ef Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:16 +0200 Subject: [PATCH 129/241] reimplement: SHC_3BB0A8C1_0x004AF6E0 100.00% Reimplemented --- .../UI/DisplayElements/GetIfDisplayElementStateNotZero.cpp | 6 +++--- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/OpenSHC/UI/DisplayElements/GetIfDisplayElementStateNotZero.cpp b/src/OpenSHC/UI/DisplayElements/GetIfDisplayElementStateNotZero.cpp index e2ceced26..1d8079e41 100644 --- a/src/OpenSHC/UI/DisplayElements/GetIfDisplayElementStateNotZero.cpp +++ b/src/OpenSHC/UI/DisplayElements/GetIfDisplayElementStateNotZero.cpp @@ -15,10 +15,10 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x004AF6E0 BOOLEnum GetIfDisplayElementStateNotZero(DisplayElementID displayElementID) { - DisplayElement* _displayElementPtr + DisplayElement* const displayElement = MACRO_CALL(OpenSHC::UI::DisplayElements_Func::FindDisplayElementWithID)(displayElementID); - if (_displayElementPtr != NULL) { - return _displayElementPtr->elementStateUnk_0xc != 0; + if (displayElement != NULL) { + return displayElement->elementStateUnk_0xc != 0; } return FALSE; } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 9e85a669a..42783673f 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -25911,7 +25911,7 @@ SHC_3BB0A8C1_0x004AF680 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004AF6B0 | 0.0% | Pending -SHC_3BB0A8C1_0x004AF6E0 | 0.0% | Pending +SHC_3BB0A8C1_0x004AF6E0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004AF700 | 0.0% | Pending From d0d6a6fac886902b8e82d06f768bae4798d4f50f Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:17 +0200 Subject: [PATCH 130/241] reimplement: SHC_3BB0A8C1_0x005010C0 100.00% Reimplemented --- src/OpenSHC/UI/HoveredState/clearHoveredState.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/OpenSHC/UI/HoveredState/clearHoveredState.cpp b/src/OpenSHC/UI/HoveredState/clearHoveredState.cpp index b9664fc12..8db116996 100644 --- a/src/OpenSHC/UI/HoveredState/clearHoveredState.cpp +++ b/src/OpenSHC/UI/HoveredState/clearHoveredState.cpp @@ -11,7 +11,7 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x005010C0 void HoveredState::clearHoveredState() { - for (int i = 0; i < 20; i++) { + for (int i = 0; i < 20; ++i) { this->elements[i].type = OpenSHC::Commands::M_MAPPER_NULL; } } From 8a3481fad052c7c525a7c5e23c81389b3c49ea3c Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:17 +0200 Subject: [PATCH 131/241] reimplement: SHC_3BB0A8C1_0x005010E0 100.00% Reimplemented --- .../clearInvalidatedHoverStates.cpp | 22 +++++++------------ status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/src/OpenSHC/UI/HoveredState/clearInvalidatedHoverStates.cpp b/src/OpenSHC/UI/HoveredState/clearInvalidatedHoverStates.cpp index f36113fa0..89aeeee45 100644 --- a/src/OpenSHC/UI/HoveredState/clearInvalidatedHoverStates.cpp +++ b/src/OpenSHC/UI/HoveredState/clearInvalidatedHoverStates.cpp @@ -16,20 +16,14 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x005010E0 void HoveredState::clearInvalidatedHoverStates() { - HoveredStateElement* _pElement; - int _index; - - if (DAT_GameSynchronyState::instance.currentGameMode != OpenSHC::Game::GM_SOLITARY) { - _pElement = &this->elements[0]; - _index = 20; - do { - if ((_pElement->type != OpenSHC::Commands::M_MAPPER_NULL) - && (_pElement->time <= (int)DAT_GameCore::instance.mapTimeInTicks)) { - _pElement->type = OpenSHC::Commands::M_MAPPER_NULL; - } - _pElement = _pElement + 6; - _index = _index + -1; - } while (_index != 0); + if (DAT_GameSynchronyState::instance.currentGameMode == OpenSHC::Game::GM_SOLITARY) { + return; + } + for (int i = 0; i < 20; ++i) { + if (this->elements[i].type != OpenSHC::Commands::M_MAPPER_NULL + && (int)DAT_GameCore::instance.mapTimeInTicks >= this->elements[i].time) { + this->elements[i].type = OpenSHC::Commands::M_MAPPER_NULL; + } } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 42783673f..367b991c8 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -41507,7 +41507,7 @@ SHC_3BB0A8C1_0x005010C0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x005010D0 | 0.0% | Pending -SHC_3BB0A8C1_0x005010E0 | 0.0% | Pending +SHC_3BB0A8C1_0x005010E0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00501110 | 0.0% | Pending From d78d81aa6e5e8fb2a5dea7d93a93a33e7fba1164 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:17 +0200 Subject: [PATCH 132/241] reimplement: SHC_3BB0A8C1_0x004F6470 100.00% Reimplemented --- src/OpenSHC/UI/Menu/updateMenuButtons.cpp | 6 +++--- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/OpenSHC/UI/Menu/updateMenuButtons.cpp b/src/OpenSHC/UI/Menu/updateMenuButtons.cpp index 4589756c1..c34b068a7 100644 --- a/src/OpenSHC/UI/Menu/updateMenuButtons.cpp +++ b/src/OpenSHC/UI/Menu/updateMenuButtons.cpp @@ -13,10 +13,10 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x004F6470 void Menu::updateMenuButtons() { - if (this->hoveredItem == (MenuItem*)0x0) { - this->someMenuItemPtr_0x3c = (MenuItem*)0x0; + if (this->hoveredItem == NULL) { + this->someMenuItemPtr_0x3c = NULL; } - this->hoveredItem = (MenuItem*)0x0; + this->hoveredItem = NULL; this->field16_0x40 = 0; DAT_MenuHandlerState::instance.field18_0x3c = 0; MACRO_CALL_MEMBER(OpenSHC::UI::Menu_Func::handleMenuItems, this)( diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 367b991c8..5f52daf76 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -38697,7 +38697,7 @@ SHC_3BB0A8C1_0x004F6460 | 0.0% | Pending SHC_3BB0A8C1_0x004F6464 | 0.0% | Pending -SHC_3BB0A8C1_0x004F6470 | 0.0% | Pending +SHC_3BB0A8C1_0x004F6470 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004F64A0 | 0.0% | Pending From 6dd5eb444b35d48736ddb765e1a9b88efed52a4d Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:18 +0200 Subject: [PATCH 133/241] reimplement: SHC_3BB0A8C1_0x004F4C60 100.00% Reimplemented --- src/OpenSHC/UI/MenuHandlerState/setupBuildMenuState.cpp | 6 +++--- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/OpenSHC/UI/MenuHandlerState/setupBuildMenuState.cpp b/src/OpenSHC/UI/MenuHandlerState/setupBuildMenuState.cpp index ca2fc1b18..86886bcbd 100644 --- a/src/OpenSHC/UI/MenuHandlerState/setupBuildMenuState.cpp +++ b/src/OpenSHC/UI/MenuHandlerState/setupBuildMenuState.cpp @@ -7,13 +7,13 @@ namespace UI { using OpenSHC::WindowsHelper::Enums::BOOLEnum; // FUNCTION: STRONGHOLDCRUSADER 0x004F4C60 - void MenuHandlerState::setupBuildMenuState(dword param_1, dword param_2) + void MenuHandlerState::setupBuildMenuState(dword const017, dword const516) { this->isBuildMenuTransitioning_0x18 = FALSE; this->buildMenuBackgroundLeftShift_0x24 = 0; this->buildMenuTransitionDirection_0x2c = -1; - this->const017 = param_1; - this->const516 = param_2; + this->const017 = const017; + this->const516 = const516; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 5f52daf76..276708010 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -38635,7 +38635,7 @@ SHC_3BB0A8C1_0x004F49D0 | 0.0% | Pending SHC_3BB0A8C1_0x004F4C30 | 0.0% | Pending -SHC_3BB0A8C1_0x004F4C60 | 0.0% | Pending +SHC_3BB0A8C1_0x004F4C60 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004F4C80 | 0.0% | Pending From 9efaa09cf5c84f2fb3f441de920bdd1583ef14c3 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:18 +0200 Subject: [PATCH 134/241] reimplement: SHC_3BB0A8C1_0x004F4C30 100.00% Reimplemented --- src/OpenSHC/UI/MenuItem/resetMenuItemStateUnk.cpp | 14 ++++++-------- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/OpenSHC/UI/MenuItem/resetMenuItemStateUnk.cpp b/src/OpenSHC/UI/MenuItem/resetMenuItemStateUnk.cpp index fb5a421e3..a6c8b25c6 100644 --- a/src/OpenSHC/UI/MenuItem/resetMenuItemStateUnk.cpp +++ b/src/OpenSHC/UI/MenuItem/resetMenuItemStateUnk.cpp @@ -11,16 +11,14 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x004F4C30 void MenuItem::resetMenuItemStateUnk() { - MenuItemTypeInt MVar1; - this->hovering = 0; this->clicked = 0; - (this->secondItemTypeData).buttonState.someTimestamp_1_0x0 = 0; - (this->secondItemTypeData).buttonState.clickTimestamp_0x4 = 0; - (this->secondItemTypeData).buttonState.countTo100 = 0; - MVar1 = this->menuItemType & Enums::MIT_MENU_ITEM_TYPE_ID_PARTUnk; - if ((MVar1 == OpenSHC::UI::Enums::MIT_SLIDERUnk) || (MVar1 == OpenSHC::UI::Enums::MIT_SCROLLBARUnk)) { - (this->secondItemTypeData).buttonState.currentButtonPictureInGm_0xc = -1000; + this->secondItemTypeData.buttonState.someTimestamp_1_0x0 = 0; + this->secondItemTypeData.buttonState.clickTimestamp_0x4 = 0; + this->secondItemTypeData.buttonState.countTo100 = 0; + MenuItemTypeInt const itemType = this->menuItemType & Enums::MIT_MENU_ITEM_TYPE_ID_PARTUnk; + if (itemType == OpenSHC::UI::Enums::MIT_SLIDERUnk || itemType == OpenSHC::UI::Enums::MIT_SCROLLBARUnk) { + this->secondItemTypeData.buttonState.currentButtonPictureInGm_0xc = -1000; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 276708010..2ab109f61 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -38633,7 +38633,7 @@ SHC_3BB0A8C1_0x004F4290 | 0.0% | Pending SHC_3BB0A8C1_0x004F49D0 | 0.0% | Pending -SHC_3BB0A8C1_0x004F4C30 | 0.0% | Pending +SHC_3BB0A8C1_0x004F4C30 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004F4C60 | 100.0% | Reimplemented From fc4f6bf1ad8da960f1f6cab3a0d38b20469dedcb Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:19 +0200 Subject: [PATCH 135/241] reimplement: SHC_3BB0A8C1_0x004A9EB0 100.00% Reimplemented --- .../UI/MenuModalComposition/findModalMenu.cpp | 15 +++++---------- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/src/OpenSHC/UI/MenuModalComposition/findModalMenu.cpp b/src/OpenSHC/UI/MenuModalComposition/findModalMenu.cpp index 65865e885..29d720d1a 100644 --- a/src/OpenSHC/UI/MenuModalComposition/findModalMenu.cpp +++ b/src/OpenSHC/UI/MenuModalComposition/findModalMenu.cpp @@ -13,18 +13,13 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x004A9EB0 MenuModal* MenuModalComposition::findModalMenu(MenuModalType menuModalID) { - MenuModal* pMVar1; - - pMVar1 = DAT_ModalMenuArrayPointerToStackTop::instance; - while (true) { - if (pMVar1 == (MenuModal*)0x0) { - return (MenuModal*)0x0; + for (MenuModal* modal = DAT_ModalMenuArrayPointerToStackTop::instance; modal != NULL; + modal = modal->pointerToNextModalMenu) { + if (modal->menuModalID == menuModalID) { + return modal; } - if (pMVar1->menuModalID == menuModalID) - break; - pMVar1 = pMVar1->pointerToNextModalMenu; } - return pMVar1; + return NULL; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 2ab109f61..1c940a840 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -25481,7 +25481,7 @@ SHC_3BB0A8C1_0x004A9E80 | 0.0% | Pending SHC_3BB0A8C1_0x004A9E90 | 0.0% | Pending -SHC_3BB0A8C1_0x004A9EB0 | 0.0% | Pending +SHC_3BB0A8C1_0x004A9EB0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004A9ED0 | 0.0% | Pending From 770718fbaad45453f8dcaae7de05ca94ca4cbacc Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:19 +0200 Subject: [PATCH 136/241] reimplement: SHC_3BB0A8C1_0x004A9E80 100.00% Reimplemented --- .../loadAllMenuElementsOfMenuModals.cpp | 10 ++++------ status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/OpenSHC/UI/MenuModalComposition/loadAllMenuElementsOfMenuModals.cpp b/src/OpenSHC/UI/MenuModalComposition/loadAllMenuElementsOfMenuModals.cpp index 3e7175fb5..3bbace5fd 100644 --- a/src/OpenSHC/UI/MenuModalComposition/loadAllMenuElementsOfMenuModals.cpp +++ b/src/OpenSHC/UI/MenuModalComposition/loadAllMenuElementsOfMenuModals.cpp @@ -14,12 +14,10 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x004A9E80 void MenuModalComposition::loadAllMenuElementsOfMenuModals() { - MenuModal* pMVar1; - - for (pMVar1 = DAT_ModalMenuArrayPointerToStackTop::instance; pMVar1 != (MenuModal*)0x0; - pMVar1 = pMVar1->pointerToNextModalMenu) { - if (pMVar1->pointerToMenu != (Menu*)0x0) { - MACRO_CALL_MEMBER(OpenSHC::UI::Menu_Func::loadMenuElements, pMVar1->pointerToMenu)(0); + for (MenuModal* modal = DAT_ModalMenuArrayPointerToStackTop::instance; modal != NULL; + modal = modal->pointerToNextModalMenu) { + if (modal->pointerToMenu != NULL) { + MACRO_CALL_MEMBER(OpenSHC::UI::Menu_Func::loadMenuElements, modal->pointerToMenu)(0); } } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 1c940a840..dd34806a9 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -25477,7 +25477,7 @@ SHC_3BB0A8C1_0x004A9E00 | 0.0% | Pending SHC_3BB0A8C1_0x004A9E60 | 0.0% | Pending -SHC_3BB0A8C1_0x004A9E80 | 0.0% | Pending +SHC_3BB0A8C1_0x004A9E80 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004A9E90 | 0.0% | Pending From 0059af567fe289c72d8c1acf1ac7e90f99eca99d Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:19 +0200 Subject: [PATCH 137/241] reimplement: SHC_3BB0A8C1_0x004B6640 100.00% Reimplemented --- .../MinimapViewState/setMapPropertyDependingOnMapSize.cpp | 8 ++++---- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/OpenSHC/UI/MinimapViewState/setMapPropertyDependingOnMapSize.cpp b/src/OpenSHC/UI/MinimapViewState/setMapPropertyDependingOnMapSize.cpp index 761a9c96b..509fec447 100644 --- a/src/OpenSHC/UI/MinimapViewState/setMapPropertyDependingOnMapSize.cpp +++ b/src/OpenSHC/UI/MinimapViewState/setMapPropertyDependingOnMapSize.cpp @@ -6,15 +6,15 @@ namespace OpenSHC { namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x004B6640 - void MinimapViewState::setMapPropertyDependingOnMapSize(uint param_1, int param_2) + void MinimapViewState::setMapPropertyDependingOnMapSize(uint x, int y) { - if (200 < DAT_TileMapState::instance.mapSize) { + if (DAT_TileMapState::instance.mapSize > 200) { MACRO_CALL_MEMBER(OpenSHC::UI::MinimapViewState_Func::renderMinimapTileStripWithLuminescence, this)( - 4, 2, 1, param_1, param_2); + 4, 2, 1, x, y); return; } MACRO_CALL_MEMBER(OpenSHC::UI::MinimapViewState_Func::renderMinimapTileStripWithLuminescence, this)( - 4, 4, 2, param_1, param_2); + 4, 4, 2, x, y); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index dd34806a9..0d7f0e3e6 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -26915,7 +26915,7 @@ SHC_3BB0A8C1_0x004B65A0 | 0.0% | Pending SHC_3BB0A8C1_0x004B65F0 | 0.0% | Pending -SHC_3BB0A8C1_0x004B6640 | 0.0% | Pending +SHC_3BB0A8C1_0x004B6640 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004B6680 | 0.0% | Pending From db1e118caa7b8319b93c949fde303bad2b4b64ad Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:20 +0200 Subject: [PATCH 138/241] reimplement: SHC_3BB0A8C1_0x004B6680 100.00% Reimplemented --- .../MinimapViewState/setTileColorsDependingOnMapSize.cpp | 9 ++++----- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/OpenSHC/UI/MinimapViewState/setTileColorsDependingOnMapSize.cpp b/src/OpenSHC/UI/MinimapViewState/setTileColorsDependingOnMapSize.cpp index 9e0acb096..3a692417a 100644 --- a/src/OpenSHC/UI/MinimapViewState/setTileColorsDependingOnMapSize.cpp +++ b/src/OpenSHC/UI/MinimapViewState/setTileColorsDependingOnMapSize.cpp @@ -6,14 +6,13 @@ namespace OpenSHC { namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x004B6680 - void MinimapViewState::setTileColorsDependingOnMapSize(int param_1, uint param_2) + void MinimapViewState::setTileColorsDependingOnMapSize(int x, uint y) { - if (200 < DAT_TileMapState::instance.mapSize) { - MACRO_CALL_MEMBER(OpenSHC::UI::MinimapViewState_Func::renderMinimapTileColors, this)( - 4, 2, 1, param_1, param_2); + if (DAT_TileMapState::instance.mapSize > 200) { + MACRO_CALL_MEMBER(OpenSHC::UI::MinimapViewState_Func::renderMinimapTileColors, this)(4, 2, 1, x, y); return; } - MACRO_CALL_MEMBER(OpenSHC::UI::MinimapViewState_Func::renderMinimapTileColors, this)(4, 4, 2, param_1, param_2); + MACRO_CALL_MEMBER(OpenSHC::UI::MinimapViewState_Func::renderMinimapTileColors, this)(4, 4, 2, x, y); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 0d7f0e3e6..0cd648321 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -26917,7 +26917,7 @@ SHC_3BB0A8C1_0x004B65F0 | 0.0% | Pending SHC_3BB0A8C1_0x004B6640 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004B6680 | 0.0% | Pending +SHC_3BB0A8C1_0x004B6680 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004B66C0 | 0.0% | Pending From bedf8d08d2ebd9aaacf5e999527c069ffdf90115 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:20 +0200 Subject: [PATCH 139/241] reimplement: SHC_3BB0A8C1_0x004B7F60 100.00% Reimplemented --- src/OpenSHC/UI/Helpers/PlayAMessageFromAI.cpp | 9 +++++---- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/OpenSHC/UI/Helpers/PlayAMessageFromAI.cpp b/src/OpenSHC/UI/Helpers/PlayAMessageFromAI.cpp index 7d1b5c752..cd0c6e5a7 100644 --- a/src/OpenSHC/UI/Helpers/PlayAMessageFromAI.cpp +++ b/src/OpenSHC/UI/Helpers/PlayAMessageFromAI.cpp @@ -17,11 +17,12 @@ namespace UI { */ // FUNCTION: STRONGHOLDCRUSADER 0x004B7F60 - void PlayAMessageFromAI(uint param_1, int param_2) + void PlayAMessageFromAI(uint messageIndex, int speakerIndex) { - if ((param_1 < 0x11) && (param_2 - 1U < 0x21)) { - MACRO_CALL_MEMBER(OpenSHC::Audio::SFX::SFXState_Func::playWAVSFX, DAT_SFXState::ptr)((char const*) - DAT_MissionAestheticsDefinedData::instance.field92_0x170[param_2 * 0x11 + param_1 + -0xc]); + if (messageIndex <= 16 && speakerIndex - 1U <= 32) { + MACRO_CALL_MEMBER(OpenSHC::Audio::SFX::SFXState_Func::playWAVSFX, DAT_SFXState::ptr)( + (char const*)DAT_MissionAestheticsDefinedData::instance + .field92_0x170[speakerIndex * 17 + messageIndex - 12]); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 0cd648321..e1003edfc 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -27097,7 +27097,7 @@ SHC_3BB0A8C1_0x004B7AF0 | 0.0% | Pending SHC_3BB0A8C1_0x004B7C90 | 0.0% | Pending -SHC_3BB0A8C1_0x004B7F60 | 0.0% | Pending +SHC_3BB0A8C1_0x004B7F60 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004B7FA0 | 0.0% | Pending From b0a49d06c5c5949d341504ce722d335a8c4aa9fe Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:21 +0200 Subject: [PATCH 140/241] reimplement: SHC_3BB0A8C1_0x004B20B0 67.57% Register alloc/tail merge diff --- .../RenderNoRushDisplayElementUnk.cpp | 141 ++++++------------ status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 48 insertions(+), 95 deletions(-) diff --git a/src/OpenSHC/UI/DisplayElements/RenderNoRushDisplayElementUnk.cpp b/src/OpenSHC/UI/DisplayElements/RenderNoRushDisplayElementUnk.cpp index a8e2dcb4d..e970aa563 100644 --- a/src/OpenSHC/UI/DisplayElements/RenderNoRushDisplayElementUnk.cpp +++ b/src/OpenSHC/UI/DisplayElements/RenderNoRushDisplayElementUnk.cpp @@ -33,114 +33,67 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x004B20B0 void RenderNoRushDisplayElementUnk(int posX, int posY, DWORD elementState) { - char* pcVar1; - int left; - int iVar2; - int iVar3; - int xParam; - int yParam; - TextAlignment alignment; - uint foregroundColor; - uint backgroundColor; - int fontSize; - BOOLEnum keepOffsetX; - int iVar4; - int blendStrength; - if (DAT_GameState::instance.mapAndTime.skirmishNoRushTicks == 0) { - /* - Plays pa paam pa pa pa paam - */ - + // Plays pa paam pa pa pa paam MACRO_CALL_MEMBER(OpenSHC::Audio::SFX::SFXState_Func::playWAVSFX, DAT_SFXState::ptr)("battlehorn.wav"); MACRO_CALL(OpenSHC::UI::DisplayElements_Func::CheckDisplayElementByIDAndSetForUnlimitedDisplay)( OpenSHC::UI::Enums::DEID_NO_RUSH, 0); return; } - iVar4 = 0x12; - pcVar1 = MACRO_CALL_MEMBER(OpenSHC::Text::TextManager_Func::getTextStringInGroupAtOffset, - DAT_TextManagerObject::ptr)(OpenSHC::DE::SHCDE::TEXT_SKIRMISH_MISC, 7); - iVar4 = MACRO_CALL_MEMBER(OpenSHC::Text::TextManager_Func::computeTextWidth, DAT_TextManagerObject::ptr)( - pcVar1, iVar4); - iVar2 = posX + 800; + int const barWidth + = MACRO_CALL_MEMBER(OpenSHC::Text::TextManager_Func::computeTextWidth, DAT_TextManagerObject::ptr)( + MACRO_CALL_MEMBER(OpenSHC::Text::TextManager_Func::getTextStringInGroupAtOffset, + DAT_TextManagerObject::ptr)(OpenSHC::DE::SHCDE::TEXT_SKIRMISH_MISC, 7), + 18) + + 50; + int x = posX + 800; DAT_PencilRenderCore::instance.surfaceTarget = OpenSHC::Rendering::Enums::RT_MAP_GAME; if (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1024x768) { - iVar2 = posX + 0x390; - goto LAB_004b21ab; - } - if (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1280x1024) { - LAB_004b212c: - iVar2 = posX + 0x230; - } else { - if (DAT_WindowAndDirectDraw::instance.currentGameResolution != OpenSHC::Rendering::SRE_1600x1200) { - if (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1280x720) - goto LAB_004b212c; - if (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1440x900) { - iVar2 = posX + 0x1e0; - goto LAB_004b21ab; - } - if ((DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1920x1080) - || (DAT_WindowAndDirectDraw::instance.currentGameResolution - == OpenSHC::Rendering::SRE_1920x1200)) { - iVar2 = posX + 0xf0; - goto LAB_004b21ab; - } - if ((DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_2560x1440) - || (DAT_WindowAndDirectDraw::instance.currentGameResolution - == OpenSHC::Rendering::SRE_2560x1600)) { - iVar2 = posX + -0x50; - goto LAB_004b21ab; - } - if (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1366x768) { - iVar2 = posX + 0x205; - goto LAB_004b21ab; - } - if (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1680x1050) { - iVar2 = posX + 0x168; - goto LAB_004b21ab; - } - if (DAT_WindowAndDirectDraw::instance.currentGameResolution != OpenSHC::Rendering::SRE_1600x900) { - if (DAT_WindowAndDirectDraw::instance.currentGameResolution - == OpenSHC::Rendering::SRE_1024x600) { - iVar2 = posX + 0x2b0; - } else if (DAT_WindowAndDirectDraw::instance.currentGameResolution - == OpenSHC::Rendering::SRE_1360x768) { - iVar2 = posX + 0x208; - } - goto LAB_004b21ab; - } - } - iVar2 = posX + 400; + x += 112; + } else if (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1280x1024) { + x -= 240; + } else if (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1600x1200) { + x -= 400; + } else if (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1280x720) { + x -= 240; + } else if (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1440x900) { + x -= 320; + } else if (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1920x1080) { + x -= 560; + } else if (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1920x1200) { + x -= 560; + } else if (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_2560x1440) { + x -= 880; + } else if (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_2560x1600) { + x -= 880; + } else if (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1366x768) { + x -= 283; + } else if (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1680x1050) { + x -= 440; + } else if (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1600x900) { + x -= 400; + } else if (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1024x600) { + x -= 112; + } else if (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1360x768) { + x -= 280; } - LAB_004b21ab: - iVar3 = (iVar4 + 0x32) / 2; - iVar2 = iVar2 + (-0x12 - iVar3); - left = iVar2 - iVar3; + int const halfWidth = barWidth / 2; + x += -18 - halfWidth; + int const left = x - halfWidth; MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawBlendedBlackBox, - DAT_PencilRenderCore::ptr)(left + -7, posY + -5, iVar3 + 5 + iVar2, posY + 0x1e, 0x10); - blendStrength = 0; - keepOffsetX = FALSE; - fontSize = 0x12; - backgroundColor = 0; - foregroundColor = 0xc2f0eb; - alignment = OpenSHC::Text::TTA_CENTER; - xParam = iVar2; - yParam = posY; - pcVar1 = MACRO_CALL_MEMBER(OpenSHC::Text::TextManager_Func::getTextStringInGroupAtOffset, - DAT_TextManagerObject::ptr)(OpenSHC::DE::SHCDE::TEXT_SKIRMISH_MISC, 7); + DAT_PencilRenderCore::ptr)(left - 7, posY - 5, halfWidth + 5 + x, posY + 30, 16); MACRO_CALL_MEMBER(OpenSHC::Text::TextManager_Func::renderInGameTextWithShadow, DAT_TextManagerObject::ptr)( - pcVar1, xParam, yParam, alignment, foregroundColor, backgroundColor, fontSize, keepOffsetX, - blendStrength); + MACRO_CALL_MEMBER(OpenSHC::Text::TextManager_Func::getTextStringInGroupAtOffset, + DAT_TextManagerObject::ptr)(OpenSHC::DE::SHCDE::TEXT_SKIRMISH_MISC, 7), + x, posY, OpenSHC::Text::TTA_CENTER, 0xc2f0eb, 0, 18, FALSE, 0); MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawBorderBox, DAT_PencilRenderCore::ptr)( - left + -1, posY + 0x12, iVar3 + 1 + iVar2, posY + 0x18, - (ushort)((int)(COL_BLACK::instance.shortValue))); + left - 1, posY + 18, halfWidth + 1 + x, posY + 24, COL_BLACK::instance.shortValue); MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawColorBox, DAT_PencilRenderCore::ptr)( - left, posY + 0x13, - ((DAT_GameState::instance.mapAndTime.skirmishNoRushTicks * (iVar4 + 0x32)) + left, posY + 19, + (DAT_GameState::instance.mapAndTime.skirmishNoRushTicks * barWidth) / DAT_GameState::instance.mapAndTime.skirmishNoRushTicksLeft - - iVar3) - + iVar2, - posY + 0x17, (ushort)((int)(COL_DARK_LIME::instance.shortValue))); + - halfWidth + x, + posY + 23, COL_DARK_LIME::instance.shortValue); DAT_PencilRenderCore::instance.surfaceTarget = OpenSHC::Rendering::Enums::RT_SCREEN_MENU; } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index e1003edfc..aebd5ce54 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -26001,7 +26001,7 @@ SHC_3BB0A8C1_0x004B1E60 | 0.0% | Pending SHC_3BB0A8C1_0x004B1EB0 | 0.0% | Pending -SHC_3BB0A8C1_0x004B20B0 | 0.0% | Pending +SHC_3BB0A8C1_0x004B20B0 | 67.6% | Register alloc/tail merge diff SHC_3BB0A8C1_0x004B2280 | 0.0% | Pending From 8f79e56d563f5f90e50898f7ba5a3cd9b32e02ea Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:21 +0200 Subject: [PATCH 141/241] reimplement: SHC_3BB0A8C1_0x004AF6B0 100.00% Reimplemented --- .../DisplayElements/TogglePlayerPingDisplayElementUnk.cpp | 8 ++++---- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/OpenSHC/UI/DisplayElements/TogglePlayerPingDisplayElementUnk.cpp b/src/OpenSHC/UI/DisplayElements/TogglePlayerPingDisplayElementUnk.cpp index c121260c6..38fe7d0f5 100644 --- a/src/OpenSHC/UI/DisplayElements/TogglePlayerPingDisplayElementUnk.cpp +++ b/src/OpenSHC/UI/DisplayElements/TogglePlayerPingDisplayElementUnk.cpp @@ -13,11 +13,11 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x004AF6B0 void TogglePlayerPingDisplayElementUnk(DisplayElementID displayElementID, uint toggleValue) { - DisplayElement* _displayElement + DisplayElement* const displayElement = MACRO_CALL(OpenSHC::UI::DisplayElements_Func::FindDisplayElementWithID)(displayElementID); - if (_displayElement != NULL) { - _displayElement->displayDuration_0x14 = -1; - _displayElement->elementStateUnk_0xc = _displayElement->elementStateUnk_0xc != 0 ? 0 : toggleValue; + if (displayElement != NULL) { + displayElement->displayDuration_0x14 = -1; + displayElement->elementStateUnk_0xc = displayElement->elementStateUnk_0xc != 0 ? 0 : toggleValue; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index aebd5ce54..e8d29bc93 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -25909,7 +25909,7 @@ SHC_3BB0A8C1_0x004AF650 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004AF680 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004AF6B0 | 0.0% | Pending +SHC_3BB0A8C1_0x004AF6B0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004AF6E0 | 100.0% | Reimplemented From e873804903cb52227c3158595599201df4a84f56 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:21 +0200 Subject: [PATCH 142/241] reimplement: SHC_3BB0A8C1_0x004D9270 100.00% Reimplemented --- src/OpenSHC/UI/Credits/SetActiveCreditsSequenceIndex.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/UI/Credits/SetActiveCreditsSequenceIndex.cpp b/src/OpenSHC/UI/Credits/SetActiveCreditsSequenceIndex.cpp index 6baeffc30..97331b4de 100644 --- a/src/OpenSHC/UI/Credits/SetActiveCreditsSequenceIndex.cpp +++ b/src/OpenSHC/UI/Credits/SetActiveCreditsSequenceIndex.cpp @@ -8,9 +8,9 @@ namespace UI { namespace Credits { // FUNCTION: STRONGHOLDCRUSADER 0x004D9270 - void __cdecl SetActiveCreditsSequenceIndex(undefined4 param_1) + void __cdecl SetActiveCreditsSequenceIndex(undefined4 sequenceIndex) { - DAT_00ed3124::instance = param_1; + DAT_00ed3124::instance = sequenceIndex; DAT_00ed3120::instance = 0; } From 30fbab754d403b9e789571ece9436706b9340a39 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:22 +0200 Subject: [PATCH 143/241] reimplement: SHC_3BB0A8C1_0x00495800 100.00% Reimplemented --- src/OpenSHC/UI/Helpers/ShowProgressBarSaveLoadDialog.cpp | 6 +++--- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/OpenSHC/UI/Helpers/ShowProgressBarSaveLoadDialog.cpp b/src/OpenSHC/UI/Helpers/ShowProgressBarSaveLoadDialog.cpp index 03602523f..b4613b109 100644 --- a/src/OpenSHC/UI/Helpers/ShowProgressBarSaveLoadDialog.cpp +++ b/src/OpenSHC/UI/Helpers/ShowProgressBarSaveLoadDialog.cpp @@ -13,12 +13,12 @@ namespace UI { using OpenSHC::UI::Enums::MenuModalType; // FUNCTION: STRONGHOLDCRUSADER 0x00495800 - void ShowProgressBarSaveLoadDialog(int param_1) + void ShowProgressBarSaveLoadDialog(int isSaving) { - DAT_MenuTextInputState::instance.DAT_MenuOptionsActionParameter = (param_1 != 0 ? 0xe : 0) + 0x20; + DAT_MenuTextInputState::instance.DAT_MenuOptionsActionParameter = (isSaving != 0 ? 14 : 0) + 32; MACRO_CALL_MEMBER(OpenSHC::UI::MenuModalComposition_Func::activateModalDialog2, DAT_MenuModalComposition1::ptr)(OpenSHC::UI::Enums::MMT_PROGRESS_BAR_BOX); - DAT_MenuModalComposition1::instance.activeModalDialogID = Enums::MMT_PROGRESS_BAR_BOX; + DAT_MenuModalComposition1::instance.activeModalDialogID = OpenSHC::UI::Enums::MMT_PROGRESS_BAR_BOX; MACRO_CALL(OpenSHC::UI::MenuItems::ProgressBarBox_Func:: MenuItemActionHandler_ProgressBarBox_LoadAndSaveGameButtonLogic)(0); } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index e8d29bc93..617ab1b02 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -24213,7 +24213,7 @@ SHC_3BB0A8C1_0x00495230 | 0.0% | Pending SHC_3BB0A8C1_0x004954A0 | 0.0% | Pending -SHC_3BB0A8C1_0x00495800 | 0.0% | Pending +SHC_3BB0A8C1_0x00495800 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00495840 | 0.0% | Pending From 3a56aa9b5fd732da7b5e050b0581aa51bd9e6177 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:00:22 +0200 Subject: [PATCH 144/241] reimplement: SHC_3BB0A8C1_0x004D9D90 100.00% Reimplemented --- src/OpenSHC/UI/Helpers/TacticalPowersFill.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/OpenSHC/UI/Helpers/TacticalPowersFill.cpp b/src/OpenSHC/UI/Helpers/TacticalPowersFill.cpp index c825a77f2..2b24df701 100644 --- a/src/OpenSHC/UI/Helpers/TacticalPowersFill.cpp +++ b/src/OpenSHC/UI/Helpers/TacticalPowersFill.cpp @@ -10,11 +10,11 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x004D9D90 void TacticalPowersFill() { - if ((DAT_TacticalPowersHelpTextDisplayBool::instance != '\0') - && (DAT_MissionDefinedData::instance.field39_0x1370 - = DAT_MissionDefinedData::instance.field39_0x1370 + -1, - DAT_MissionDefinedData::instance.field39_0x1370 == 0)) { - DAT_TacticalPowersHelpTextDisplayBool::instance = '\0'; + if (DAT_TacticalPowersHelpTextDisplayBool::instance != 0) { + DAT_MissionDefinedData::instance.field39_0x1370 -= 1; + if (DAT_MissionDefinedData::instance.field39_0x1370 == 0) { + DAT_TacticalPowersHelpTextDisplayBool::instance = 0; + } } } From 4caa23c44fa60aeea365ff2a2e342b3c5fc18a13 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:11:52 +0200 Subject: [PATCH 145/241] reimplement: SHC_3BB0A8C1_0x00433200 100.00% Reimplemented --- ...er_BuildMenu_SomeKeepAndGranaryCheckUnk.cpp | 18 +++++++++--------- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemActionHandler_BuildMenu_SomeKeepAndGranaryCheckUnk.cpp b/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemActionHandler_BuildMenu_SomeKeepAndGranaryCheckUnk.cpp index a09cfbe6a..97a6c0486 100644 --- a/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemActionHandler_BuildMenu_SomeKeepAndGranaryCheckUnk.cpp +++ b/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemActionHandler_BuildMenu_SomeKeepAndGranaryCheckUnk.cpp @@ -20,15 +20,15 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x00433200 void MenuItemActionHandler_BuildMenu_SomeKeepAndGranaryCheckUnk(int param_1, ...) { - if (DAT_GameCore::instance.activeMenuTab.buildMenuTab == ((BuildMenuTabType)0x31)) { - if (0 - < MACRO_CALL_MEMBER(OpenSHC::Game::GameStateStructures_Func::singlePlayerHasKeepAndGranaryCheck, - DAT_GameState::ptr)()) { - DAT_GameCore::instance.buildmenuMenuTabToSwitchTo.tabType - = OpenSHC::UI::Enums::BASMTT_HUNTERSHUT; - MACRO_CALL_MEMBER(OpenSHC::Game::GameCore_Func::switchToMenuView, DAT_GameCore::ptr)( - OpenSHC::UI::Enums::MVT_BUILD_MENU, 0); - } + if (DAT_GameCore::instance.activeMenuTab.buildMenuTab != (BuildMenuTabType)0x31) { + return; + } + if (MACRO_CALL_MEMBER(OpenSHC::Game::GameStateStructures_Func::singlePlayerHasKeepAndGranaryCheck, + DAT_GameState::ptr)() + > 0) { + DAT_GameCore::instance.buildmenuMenuTabToSwitchTo.tabType = OpenSHC::UI::Enums::BASMTT_HUNTERSHUT; + MACRO_CALL_MEMBER(OpenSHC::Game::GameCore_Func::switchToMenuView, DAT_GameCore::ptr)( + OpenSHC::UI::Enums::MVT_BUILD_MENU, 0); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 617ab1b02..4bf9b705c 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -11083,7 +11083,7 @@ SHC_3BB0A8C1_0x00431B60 | 0.0% | Pending SHC_3BB0A8C1_0x00433030 | 0.0% | Pending -SHC_3BB0A8C1_0x00433200 | 0.0% | Pending +SHC_3BB0A8C1_0x00433200 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00433230 | 0.0% | Pending From 7ae8cbfbfe333bee12bdbb465464e37e8433db4e Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:11:53 +0200 Subject: [PATCH 146/241] reimplement: SHC_3BB0A8C1_0x00434230 100.00% Reimplemented --- ...RenderFunction_BuildMenu_BuildingKeepSubcategoryButton.cpp | 4 ++-- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_BuildingKeepSubcategoryButton.cpp b/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_BuildingKeepSubcategoryButton.cpp index 7d7809f8d..1b10a345b 100644 --- a/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_BuildingKeepSubcategoryButton.cpp +++ b/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_BuildingKeepSubcategoryButton.cpp @@ -15,8 +15,8 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x00434230 void MenuItemRenderFunction_BuildMenu_BuildingKeepSubcategoryButton(int param_1, ...) { - if ((DAT_GameCore::instance.gameMode_2 != OpenSHC::Game::GM_EDITOR) - && (DAT_GameCore::instance.gameMode_2 != OpenSHC::Game::GM_SIEGE_THAT)) { + if (DAT_GameCore::instance.gameMode_2 != OpenSHC::Game::GM_EDITOR + && DAT_GameCore::instance.gameMode_2 != OpenSHC::Game::GM_SIEGE_THAT) { DAT_ButtonUnknownZero::instance = 1; return; } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 4bf9b705c..9eed88e27 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -11135,7 +11135,7 @@ SHC_3BB0A8C1_0x00434224 | 0.0% | Pending SHC_3BB0A8C1_0x00434228 | 0.0% | Pending -SHC_3BB0A8C1_0x00434230 | 0.0% | Pending +SHC_3BB0A8C1_0x00434230 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00434260 | 100.0% | Reimplemented From 95b386cd0b7b09faccde31034770edaa02404f6a Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:11:53 +0200 Subject: [PATCH 147/241] reimplement: SHC_3BB0A8C1_0x00466920 100.00% Reimplemented --- ...ItemRenderFunction_BuildMenu_BuildingSubcategoryButton.cpp | 4 ++-- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_BuildingSubcategoryButton.cpp b/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_BuildingSubcategoryButton.cpp index fe20857fe..77415d7af 100644 --- a/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_BuildingSubcategoryButton.cpp +++ b/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_BuildingSubcategoryButton.cpp @@ -11,10 +11,10 @@ namespace UI { namespace BuildMenu { // FUNCTION: STRONGHOLDCRUSADER 0x00466920 - void MenuItemRenderFunction_BuildMenu_BuildingSubcategoryButton(int param_1, ...) + void MenuItemRenderFunction_BuildMenu_BuildingSubcategoryButton(int buildingType, ...) { if (MACRO_CALL_MEMBER(OpenSHC::Map::MapPropertiesState_Func::isMercRecruitableForBuildingType, - DAT_MapPropertiesState::ptr)(param_1) + DAT_MapPropertiesState::ptr)(buildingType) != 0) { MACRO_CALL(OpenSHC::UI::MenuItems::General_Func:: MenuItemRenderFunction_General_RenderCurrentButtonWithPossibleAlphaTexOnScreenMenuSurface)(); diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 9eed88e27..8b4adfa46 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -19977,7 +19977,7 @@ SHC_3BB0A8C1_0x004668E4 | 0.0% | Pending SHC_3BB0A8C1_0x004668F0 | 0.0% | Pending -SHC_3BB0A8C1_0x00466920 | 0.0% | Pending +SHC_3BB0A8C1_0x00466920 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00466950 | 0.0% | Pending From 7ec817ccb73ced498cfc2ffeda3e08615d4a3d44 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:11:53 +0200 Subject: [PATCH 148/241] reimplement: SHC_3BB0A8C1_0x00439390 100.00% Reimplemented --- ...uildMenu_CurrentlySelectedTroopsDeselectHelper.cpp | 11 +++++++---- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_CurrentlySelectedTroopsDeselectHelper.cpp b/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_CurrentlySelectedTroopsDeselectHelper.cpp index 27f3d1efc..3aed4bca2 100644 --- a/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_CurrentlySelectedTroopsDeselectHelper.cpp +++ b/src/OpenSHC/UI/MenuItems/BuildMenu/MenuItemRenderFunction_BuildMenu_CurrentlySelectedTroopsDeselectHelper.cpp @@ -9,11 +9,14 @@ namespace UI { namespace BuildMenu { // FUNCTION: STRONGHOLDCRUSADER 0x00439390 - void MenuItemRenderFunction_BuildMenu_CurrentlySelectedTroopsDeselectHelper(int param_1, ...) + void MenuItemRenderFunction_BuildMenu_CurrentlySelectedTroopsDeselectHelper(int selectionIndex, ...) { - if ((DAT_UnitsState::instance.nHasOwnedUnitInSelection == 0) - || (DAT_ButtonUnknownZero::instance = 0, - ((int*)(&DAT_UnitsState::instance.selectionEngineers))[param_1] == -1)) { + if (DAT_UnitsState::instance.nHasOwnedUnitInSelection == 0) { + DAT_ButtonUnknownZero::instance = 1; + return; + } + DAT_ButtonUnknownZero::instance = 0; + if ((&DAT_UnitsState::instance.selectionEngineers)[selectionIndex] == -1) { DAT_ButtonUnknownZero::instance = 1; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 8b4adfa46..f8fc757bc 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -13357,7 +13357,7 @@ SHC_3BB0A8C1_0x0043937C | 0.0% | Pending SHC_3BB0A8C1_0x00439380 | 0.0% | Pending -SHC_3BB0A8C1_0x00439390 | 0.0% | Pending +SHC_3BB0A8C1_0x00439390 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004393C0 | 0.0% | Pending From 5cec49b3ab8e895cb047fb65302a8ceaf340271f Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:11:54 +0200 Subject: [PATCH 149/241] reimplement: SHC_3BB0A8C1_0x0043FC80 100.00% Reimplemented --- ...emActionHandler_BuildingAndStatusMenu_ArmySwitchButton.cpp | 4 ++-- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_ArmySwitchButton.cpp b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_ArmySwitchButton.cpp index eff9eaf41..5ae41783a 100644 --- a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_ArmySwitchButton.cpp +++ b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_ArmySwitchButton.cpp @@ -10,8 +10,8 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x0043FC80 void MenuItemActionHandler_BuildingAndStatusMenu_ArmySwitchButton() { - DAT_00b95b68::instance = DAT_00b95b68::instance + 1; - if (2 < DAT_00b95b68::instance) { + DAT_00b95b68::instance += 1; + if ((int)DAT_00b95b68::instance > 2) { DAT_00b95b68::instance = 0; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index f8fc757bc..c2eec87d9 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -13611,7 +13611,7 @@ SHC_3BB0A8C1_0x0043FBB0 | 0.0% | Pending SHC_3BB0A8C1_0x0043FBF0 | 0.0% | Pending -SHC_3BB0A8C1_0x0043FC80 | 0.0% | Pending +SHC_3BB0A8C1_0x0043FC80 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0043FCA0 | 0.0% | Pending From 800b2027e6a0ff7465639f4ad89d9915f25d531c Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:11:54 +0200 Subject: [PATCH 150/241] reimplement: SHC_3BB0A8C1_0x00465920 100.00% Reimplemented --- ...andler_BuildingAndStatusMenu_MarketMenuChangeButtons.cpp | 6 +++--- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_MarketMenuChangeButtons.cpp b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_MarketMenuChangeButtons.cpp index fbcc4fc73..c65130883 100644 --- a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_MarketMenuChangeButtons.cpp +++ b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemActionHandler_BuildingAndStatusMenu_MarketMenuChangeButtons.cpp @@ -12,12 +12,12 @@ namespace UI { using OpenSHC::UI::Enums::MenuViewType; // FUNCTION: STRONGHOLDCRUSADER 0x00465920 - void MenuItemActionHandler_BuildingAndStatusMenu_MarketMenuChangeButtons(int param_1, ...) + void MenuItemActionHandler_BuildingAndStatusMenu_MarketMenuChangeButtons(int tabType, ...) { - DAT_GameCore::instance.buildingandstatusmenuMenuTabToSwitchTo = param_1; + DAT_GameCore::instance.buildingandstatusmenuMenuTabToSwitchTo = tabType; MACRO_CALL_MEMBER(OpenSHC::Game::GameCore_Func::switchToMenuView, DAT_GameCore::ptr)( OpenSHC::UI::Enums::MVT_BUILDING_AND_STATUS_MENU, 0); - DAT_GameCore::instance.field61_0x100 = param_1; + DAT_GameCore::instance.field61_0x100 = tabType; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index c2eec87d9..bf40820c4 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -19913,7 +19913,7 @@ SHC_3BB0A8C1_0x00465890 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004658B0 | 0.0% | Pending -SHC_3BB0A8C1_0x00465920 | 0.0% | Pending +SHC_3BB0A8C1_0x00465920 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00465950 | 0.0% | Pending From a5076c3bb80e8d1dbe8392022c32fea5c0bbf628 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:11:55 +0200 Subject: [PATCH 151/241] reimplement: SHC_3BB0A8C1_0x0043A880 100.00% Reimplemented --- ...tion_BuildingAndStatusMenu_BuildingHelpTextButton.cpp | 9 +++++---- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemRenderFunction_BuildingAndStatusMenu_BuildingHelpTextButton.cpp b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemRenderFunction_BuildingAndStatusMenu_BuildingHelpTextButton.cpp index 2595a5ad3..af35ef44d 100644 --- a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemRenderFunction_BuildingAndStatusMenu_BuildingHelpTextButton.cpp +++ b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemRenderFunction_BuildingAndStatusMenu_BuildingHelpTextButton.cpp @@ -17,11 +17,12 @@ namespace UI { void MenuItemRenderFunction_BuildingAndStatusMenu_BuildingHelpTextButton(int param_1, ...) { DAT_ButtonUnknownZero::instance = 0; - if ((DAT_GameCore::instance.activeMenuTab.tabType - == OpenSHC::UI::Enums::BASMTT_BARRACKS_OR_MPMENU_MODEM) - || (DAT_GameCore::instance.activeMenuTab.tabType == OpenSHC::UI::Enums::BASMTT_MERCENARYPOST)) { + if (DAT_GameCore::instance.activeMenuTab.tabType == OpenSHC::UI::Enums::BASMTT_BARRACKS_OR_MPMENU_MODEM + || DAT_GameCore::instance.activeMenuTab.tabType == OpenSHC::UI::Enums::BASMTT_MERCENARYPOST) { DAT_ButtonUnknownZero::instance = 1; - } else if (DAT_BuildingsState::instance.field24_0x18e04c != 0) { + return; + } + if (DAT_BuildingsState::instance.field24_0x18e04c != 0) { MACRO_CALL(OpenSHC::UI::MenuItems::General_Func:: MenuItemRenderFunction_General_RenderCurrentButtonWithPossibleAlphaTexOnScreenMenuSurface)(); } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index bf40820c4..35ceec792 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -13397,7 +13397,7 @@ SHC_3BB0A8C1_0x0043A850 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0043A860 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0043A880 | 0.0% | Pending +SHC_3BB0A8C1_0x0043A880 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0043A8C0 | 100.0% | Reimplemented From e8df0297d7d4dd2f621aba8d09ceb40969e1e2c3 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:11:55 +0200 Subject: [PATCH 152/241] reimplement: SHC_3BB0A8C1_0x0043F2C0 100.00% Reimplemented --- ...ingAndStatusMenu_PopularityMenuSwitchButton.cpp | 14 +++++++------- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemRenderFunction_BuildingAndStatusMenu_PopularityMenuSwitchButton.cpp b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemRenderFunction_BuildingAndStatusMenu_PopularityMenuSwitchButton.cpp index aae9f9eea..b02cd7928 100644 --- a/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemRenderFunction_BuildingAndStatusMenu_PopularityMenuSwitchButton.cpp +++ b/src/OpenSHC/UI/MenuItems/BuildingAndStatusMenu/MenuItemRenderFunction_BuildingAndStatusMenu_PopularityMenuSwitchButton.cpp @@ -11,15 +11,15 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x0043F2C0 void MenuItemRenderFunction_BuildingAndStatusMenu_PopularityMenuSwitchButton(int param_1, ...) - { - if (DAT_GameCore::instance.field78_0x148 != 1) { - if (DAT_GameCore::instance.field77_0x144 == 1) { - DAT_CurrentButtonGmDataIndex::instance = 0x73; - } - MACRO_CALL(OpenSHC::UI::MenuItems::General_Func:: - MenuItemRenderFunction_General_RenderCurrentButtonWithPossibleAlphaTexOnScreenMenuSurface)(); + if (DAT_GameCore::instance.field78_0x148 == 1) { + return; + } + if (DAT_GameCore::instance.field77_0x144 == 1) { + DAT_CurrentButtonGmDataIndex::instance = 0x73; } + MACRO_CALL(OpenSHC::UI::MenuItems::General_Func:: + MenuItemRenderFunction_General_RenderCurrentButtonWithPossibleAlphaTexOnScreenMenuSurface)(); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 35ceec792..f525a8b90 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -13597,7 +13597,7 @@ SHC_3BB0A8C1_0x0043E6C0 | 0.0% | Pending SHC_3BB0A8C1_0x0043F2B0 | 0.0% | Pending -SHC_3BB0A8C1_0x0043F2C0 | 0.0% | Pending +SHC_3BB0A8C1_0x0043F2C0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0043F2F0 | 0.0% | Pending From 3faedd1984dca2336a49f5c4f58b7be3b477a131 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:11:55 +0200 Subject: [PATCH 153/241] reimplement: SHC_3BB0A8C1_0x0047FFA0 100.00% Reimplemented --- .../MenuItemActionHandler_Chat_SendMessageToPlayer.cpp | 8 ++++---- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/OpenSHC/UI/MenuItems/Chat/MenuItemActionHandler_Chat_SendMessageToPlayer.cpp b/src/OpenSHC/UI/MenuItems/Chat/MenuItemActionHandler_Chat_SendMessageToPlayer.cpp index a4d4456c3..b16e58b13 100644 --- a/src/OpenSHC/UI/MenuItems/Chat/MenuItemActionHandler_Chat_SendMessageToPlayer.cpp +++ b/src/OpenSHC/UI/MenuItems/Chat/MenuItemActionHandler_Chat_SendMessageToPlayer.cpp @@ -8,11 +8,11 @@ namespace UI { namespace Chat { // FUNCTION: STRONGHOLDCRUSADER 0x0047FFA0 - void MenuItemActionHandler_Chat_SendMessageToPlayer(int param_1, ...) + void MenuItemActionHandler_Chat_SendMessageToPlayer(int receiver, ...) { - if (param_1 < 0) { - unsigned int param = -param_1; - DAT_GameSynchronyState::instance.DAT_ChatMessageReceiverArray[param] ^= 1; + if (receiver < 0) { + unsigned int const playerID = -receiver; + DAT_GameSynchronyState::instance.DAT_ChatMessageReceiverArray[playerID] ^= 1; } DAT_GameSynchronyState::instance .DAT_ChatMessageReceiverArray[DAT_GameSynchronyState::instance.currentPlayerSlotID] = 1; diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index f525a8b90..8f4f246c9 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -22411,7 +22411,7 @@ SHC_3BB0A8C1_0x0047FD50 | 0.0% | Pending SHC_3BB0A8C1_0x0047FEA0 | 0.0% | Pending -SHC_3BB0A8C1_0x0047FFA0 | 0.0% | Pending +SHC_3BB0A8C1_0x0047FFA0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0047FFE0 | 0.0% | Pending From 46c3c752a4bd14ed213837ae564b9e3b878b8d88 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:11:56 +0200 Subject: [PATCH 154/241] reimplement: SHC_3BB0A8C1_0x0048F850 100.00% Reimplemented --- .../Chat/MenuItemActionHandler_Chat_TauntButtons.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/UI/MenuItems/Chat/MenuItemActionHandler_Chat_TauntButtons.cpp b/src/OpenSHC/UI/MenuItems/Chat/MenuItemActionHandler_Chat_TauntButtons.cpp index 97d157280..18d9f97a6 100644 --- a/src/OpenSHC/UI/MenuItems/Chat/MenuItemActionHandler_Chat_TauntButtons.cpp +++ b/src/OpenSHC/UI/MenuItems/Chat/MenuItemActionHandler_Chat_TauntButtons.cpp @@ -12,9 +12,9 @@ namespace UI { using OpenSHC::Commands::GameCommandType; // FUNCTION: STRONGHOLDCRUSADER 0x0048F850 - void MenuItemActionHandler_Chat_TauntButtons(int param_1, ...) + void MenuItemActionHandler_Chat_TauntButtons(int tauntOrMessage, ...) { - DAT_GameSynchronyState::instance.DAT_ChatTauntOrMessage = param_1; + DAT_GameSynchronyState::instance.DAT_ChatTauntOrMessage = tauntOrMessage; MACRO_CALL_MEMBER(OpenSHC::Synchrony::GameSynchronyState_Func::queueCommand, DAT_GameSynchronyState::ptr)(OpenSHC::Commands::GCT_TAUNT_OR_CHAT); } From 946dbce791e02e418c3d1f2d4eaa206a9a541a2f Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:11:56 +0200 Subject: [PATCH 155/241] reimplement: SHC_3BB0A8C1_0x0047D0E0 100.00% Reimplemented --- ...nHandler_ChooseNetworkServiceProvider_ModemTableRows.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/OpenSHC/UI/MenuItems/ChooseNetworkServiceProvider/MenuItemActionHandler_ChooseNetworkServiceProvider_ModemTableRows.cpp b/src/OpenSHC/UI/MenuItems/ChooseNetworkServiceProvider/MenuItemActionHandler_ChooseNetworkServiceProvider_ModemTableRows.cpp index beb6c4858..2d4924c45 100644 --- a/src/OpenSHC/UI/MenuItems/ChooseNetworkServiceProvider/MenuItemActionHandler_ChooseNetworkServiceProvider_ModemTableRows.cpp +++ b/src/OpenSHC/UI/MenuItems/ChooseNetworkServiceProvider/MenuItemActionHandler_ChooseNetworkServiceProvider_ModemTableRows.cpp @@ -8,11 +8,11 @@ namespace UI { namespace ChooseNetworkServiceProvider { // FUNCTION: STRONGHOLDCRUSADER 0x0047D0E0 - void MenuItemActionHandler_ChooseNetworkServiceProvider_ModemTableRows(int param_1, ...) + void MenuItemActionHandler_ChooseNetworkServiceProvider_ModemTableRows(int row, ...) { - if (DAT_GameSynchronyState::instance.modemScrollBarOffset + param_1 + if (DAT_GameSynchronyState::instance.modemScrollBarOffset + row < DAT_GameSynchronyState::instance.modemScrollbarCount) { - DAT_GameSynchronyState::instance.modemScrollbarIndex = param_1; + DAT_GameSynchronyState::instance.modemScrollbarIndex = row; } } From f940f01cf84ed42d7b37b975a8c4fe2abffea54e Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:11:56 +0200 Subject: [PATCH 156/241] reimplement: SHC_3BB0A8C1_0x004D9D60 100.00% Reimplemented --- .../MenuItemActionHandler_DeleteGameRecord_Main.cpp | 4 ++-- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/OpenSHC/UI/MenuItems/DeleteGameRecord/MenuItemActionHandler_DeleteGameRecord_Main.cpp b/src/OpenSHC/UI/MenuItems/DeleteGameRecord/MenuItemActionHandler_DeleteGameRecord_Main.cpp index 1cec7c789..c64a18448 100644 --- a/src/OpenSHC/UI/MenuItems/DeleteGameRecord/MenuItemActionHandler_DeleteGameRecord_Main.cpp +++ b/src/OpenSHC/UI/MenuItems/DeleteGameRecord/MenuItemActionHandler_DeleteGameRecord_Main.cpp @@ -16,9 +16,9 @@ namespace UI { using OpenSHC::WindowsHelper::Enums::BOOLEnum; // FUNCTION: STRONGHOLDCRUSADER 0x004D9D60 - void MenuItemActionHandler_DeleteGameRecord_Main(int param_1, ...) + void MenuItemActionHandler_DeleteGameRecord_Main(int action, ...) { - if (param_1 == 0x16) { + if (action == 22) { MACRO_CALL(OpenSHC::Game::Skirmish_Func::SkirmishLeaderboard_DeleteEntry)(DAT_00ed2788::instance); MACRO_CALL(OpenSHC::Game::Skirmish_Func::Skirmish_PrepareLeaderboardView)(); } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 8f4f246c9..3292243ed 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -36053,7 +36053,7 @@ SHC_3BB0A8C1_0x004D9C10 | 0.0% | Pending SHC_3BB0A8C1_0x004D9CC0 | 0.0% | Pending -SHC_3BB0A8C1_0x004D9D60 | 0.0% | Pending +SHC_3BB0A8C1_0x004D9D60 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004D9D90 | 100.0% | Reimplemented From d5fa35a97ed29488dfbf35e4225a6ec7a5692e2c Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:11:57 +0200 Subject: [PATCH 157/241] reimplement: SHC_3BB0A8C1_0x004BB650 100.00% Reimplemented --- .../MenuItemActionHandler_DisableArabTroops_Main.cpp | 9 ++++----- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/OpenSHC/UI/MenuItems/DisableArabTroops/MenuItemActionHandler_DisableArabTroops_Main.cpp b/src/OpenSHC/UI/MenuItems/DisableArabTroops/MenuItemActionHandler_DisableArabTroops_Main.cpp index 3ea863b50..adbf30f7a 100644 --- a/src/OpenSHC/UI/MenuItems/DisableArabTroops/MenuItemActionHandler_DisableArabTroops_Main.cpp +++ b/src/OpenSHC/UI/MenuItems/DisableArabTroops/MenuItemActionHandler_DisableArabTroops_Main.cpp @@ -15,14 +15,13 @@ namespace UI { using OpenSHC::WindowsHelper::Enums::BOOLEnum; // FUNCTION: STRONGHOLDCRUSADER 0x004BB650 - void MenuItemActionHandler_DisableArabTroops_Main(int param_1, ...) + void MenuItemActionHandler_DisableArabTroops_Main(int troopIndex, ...) { - if ((uint)param_1 < 8) { - DAT_MapPropertiesState::instance.SEC_MercRecruitable[param_1] - = DAT_MapPropertiesState::instance.SEC_MercRecruitable[param_1] ^ 1; + if ((uint)troopIndex <= 7) { + DAT_MapPropertiesState::instance.SEC_MercRecruitable[troopIndex] ^= 1; return; } - if (param_1 == -3) { + if (troopIndex == -3) { MACRO_CALL_MEMBER(OpenSHC::UI::MenuModalComposition_Func::activateModalDialog, DAT_MenuModalComposition1::ptr)(OpenSHC::UI::Enums::MMT_BUILDING_AVAILABILITY, FALSE); } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 3292243ed..10d91ae4b 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -29291,7 +29291,7 @@ SHC_3BB0A8C1_0x004BB540 | 0.0% | Pending SHC_3BB0A8C1_0x004BB570 | 0.0% | Pending -SHC_3BB0A8C1_0x004BB650 | 0.0% | Pending +SHC_3BB0A8C1_0x004BB650 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004BB680 | 0.0% | Pending From a10c50f47ed585879146f3d99355081ff70d5e89 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:11:57 +0200 Subject: [PATCH 158/241] reimplement: SHC_3BB0A8C1_0x004BB540 100.00% Reimplemented --- .../MenuItemActionHandler_DisableEuroTroops_Main.cpp | 10 +++++----- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/OpenSHC/UI/MenuItems/DisableEuroTroops/MenuItemActionHandler_DisableEuroTroops_Main.cpp b/src/OpenSHC/UI/MenuItems/DisableEuroTroops/MenuItemActionHandler_DisableEuroTroops_Main.cpp index 05f1ca62a..5c97f4aa6 100644 --- a/src/OpenSHC/UI/MenuItems/DisableEuroTroops/MenuItemActionHandler_DisableEuroTroops_Main.cpp +++ b/src/OpenSHC/UI/MenuItems/DisableEuroTroops/MenuItemActionHandler_DisableEuroTroops_Main.cpp @@ -15,14 +15,14 @@ namespace UI { using OpenSHC::WindowsHelper::Enums::BOOLEnum; // FUNCTION: STRONGHOLDCRUSADER 0x004BB540 - void MenuItemActionHandler_DisableEuroTroops_Main(int param_1, ...) + void MenuItemActionHandler_DisableEuroTroops_Main(int troopIndex, ...) { - if ((uint)param_1 < 8) { - DAT_MapPropertiesState::instance.SEC_MercRecruitable[param_1 + -7] - = DAT_MapPropertiesState::instance.SEC_MercRecruitable[param_1 + -7] ^ 1; + // indexes the seven barracks troop flags that directly precede SEC_MercRecruitable + if ((uint)troopIndex <= 7) { + DAT_MapPropertiesState::instance.SEC_MercRecruitable[troopIndex - 7] ^= 1; return; } - if (param_1 == -3) { + if (troopIndex == -3) { MACRO_CALL_MEMBER(OpenSHC::UI::MenuModalComposition_Func::activateModalDialog, DAT_MenuModalComposition1::ptr)(OpenSHC::UI::Enums::MMT_BUILDING_AVAILABILITY, FALSE); } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 10d91ae4b..74cd4190c 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -29287,7 +29287,7 @@ SHC_3BB0A8C1_0x004BB52C | 0.0% | Pending SHC_3BB0A8C1_0x004BB530 | 0.0% | Pending -SHC_3BB0A8C1_0x004BB540 | 0.0% | Pending +SHC_3BB0A8C1_0x004BB540 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004BB570 | 0.0% | Pending From ba3109fa4d4c9aa13a3fec8bab2831efdd8c1a2a Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:11:58 +0200 Subject: [PATCH 159/241] reimplement: SHC_3BB0A8C1_0x0047D3F0 100.00% Reimplemented --- ...nuItemActionHandler_FindingNetworkSessions_TableRows.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/OpenSHC/UI/MenuItems/FindingNetworkSessions/MenuItemActionHandler_FindingNetworkSessions_TableRows.cpp b/src/OpenSHC/UI/MenuItems/FindingNetworkSessions/MenuItemActionHandler_FindingNetworkSessions_TableRows.cpp index 81e8844e8..3e8ba7984 100644 --- a/src/OpenSHC/UI/MenuItems/FindingNetworkSessions/MenuItemActionHandler_FindingNetworkSessions_TableRows.cpp +++ b/src/OpenSHC/UI/MenuItems/FindingNetworkSessions/MenuItemActionHandler_FindingNetworkSessions_TableRows.cpp @@ -8,11 +8,11 @@ namespace UI { namespace FindingNetworkSessions { // FUNCTION: STRONGHOLDCRUSADER 0x0047D3F0 - void MenuItemActionHandler_FindingNetworkSessions_TableRows(int param_1, ...) + void MenuItemActionHandler_FindingNetworkSessions_TableRows(int row, ...) { - if (DAT_GameSynchronyState::instance.scrollBarItemOffset + param_1 + if (DAT_GameSynchronyState::instance.scrollBarItemOffset + row < DAT_GameSynchronyState::instance.DPLAY_SessionsCount) { - DAT_GameSynchronyState::instance.scrollBarIndex = param_1; + DAT_GameSynchronyState::instance.scrollBarIndex = row; } } From 69818b3c4a3461c016291f22385f79e6c27c44a6 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:11:58 +0200 Subject: [PATCH 160/241] reimplement: SHC_3BB0A8C1_0x004F6A60 100.00% Reimplemented --- .../MenuItemActionHandler_General_DisplayConditionalText.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/UI/MenuItems/General/MenuItemActionHandler_General_DisplayConditionalText.cpp b/src/OpenSHC/UI/MenuItems/General/MenuItemActionHandler_General_DisplayConditionalText.cpp index 027b5e0bc..2b683acf2 100644 --- a/src/OpenSHC/UI/MenuItems/General/MenuItemActionHandler_General_DisplayConditionalText.cpp +++ b/src/OpenSHC/UI/MenuItems/General/MenuItemActionHandler_General_DisplayConditionalText.cpp @@ -9,11 +9,11 @@ namespace UI { namespace General { // FUNCTION: STRONGHOLDCRUSADER 0x004F6A60 - void MenuItemActionHandler_General_DisplayConditionalText(int param_1, ...) + void MenuItemActionHandler_General_DisplayConditionalText(int textID, ...) { MACRO_CALL_MEMBER( OpenSHC::UI::BottomLeftTextDisplayState_Func::renderCurrentlyDisplayedTextConstructionCost, - DAT_BottomLeftTextDisplayState::ptr)(param_1); + DAT_BottomLeftTextDisplayState::ptr)(textID); } } From c50a3ad7bb4c4727ab443d445327932ee8d1616e Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:11:58 +0200 Subject: [PATCH 161/241] reimplement: SHC_3BB0A8C1_0x00433230 100.00% Reimplemented --- ...temActionHandler_InGameMenu_UnknownBinkRelated.cpp | 11 ++++++----- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/OpenSHC/UI/MenuItems/InGameMenu/MenuItemActionHandler_InGameMenu_UnknownBinkRelated.cpp b/src/OpenSHC/UI/MenuItems/InGameMenu/MenuItemActionHandler_InGameMenu_UnknownBinkRelated.cpp index db47fe980..77d98d399 100644 --- a/src/OpenSHC/UI/MenuItems/InGameMenu/MenuItemActionHandler_InGameMenu_UnknownBinkRelated.cpp +++ b/src/OpenSHC/UI/MenuItems/InGameMenu/MenuItemActionHandler_InGameMenu_UnknownBinkRelated.cpp @@ -11,12 +11,13 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x00433230 void MenuItemActionHandler_InGameMenu_UnknownBinkRelated(int param_1, ...) { - if (DAT_GameCore::instance.isBinkVideoPlaying != 0) { - if (DAT_BinkControlState::instance.binkObjPtrArray[1] == NULL) { - DAT_GameCore::instance.isBinkVideoPlaying = 0; - } - DAT_GameCore::instance.countdown = 1; + if (DAT_GameCore::instance.isBinkVideoPlaying == 0) { + return; } + if (DAT_BinkControlState::instance.binkObjPtrArray[1] == NULL) { + DAT_GameCore::instance.isBinkVideoPlaying = 0; + } + DAT_GameCore::instance.countdown = 1; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 74cd4190c..b9d58e771 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -11085,7 +11085,7 @@ SHC_3BB0A8C1_0x00433030 | 0.0% | Pending SHC_3BB0A8C1_0x00433200 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00433230 | 0.0% | Pending +SHC_3BB0A8C1_0x00433230 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00433260 | 0.0% | Pending From 85b73d18d8d0002561533f40465c8b3d3f6f1ceb Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:11:59 +0200 Subject: [PATCH 162/241] reimplement: SHC_3BB0A8C1_0x004B6500 100.00% Reimplemented --- .../MenuItemRenderFunction_InGameMenu_MapEventIconUnk.cpp | 5 ++--- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/OpenSHC/UI/MenuItems/InGameMenu/MenuItemRenderFunction_InGameMenu_MapEventIconUnk.cpp b/src/OpenSHC/UI/MenuItems/InGameMenu/MenuItemRenderFunction_InGameMenu_MapEventIconUnk.cpp index dfec25105..da87850ce 100644 --- a/src/OpenSHC/UI/MenuItems/InGameMenu/MenuItemRenderFunction_InGameMenu_MapEventIconUnk.cpp +++ b/src/OpenSHC/UI/MenuItems/InGameMenu/MenuItemRenderFunction_InGameMenu_MapEventIconUnk.cpp @@ -14,12 +14,11 @@ namespace UI { void MenuItemRenderFunction_InGameMenu_MapEventIconUnk(int param_1, ...) { DAT_ButtonUnknownZero::instance = 1; - if ((DAT_MinimapViewState::instance.spawnMomentCount != 0) - && (DAT_GameCore::instance.isBinkVideoPlaying == 0)) { + if (DAT_MinimapViewState::instance.spawnMomentCount != 0 + && DAT_GameCore::instance.isBinkVideoPlaying == 0) { DAT_ButtonUnknownZero::instance = 0; MACRO_CALL(OpenSHC::UI::MenuItems::General_Func:: MenuItemRenderFunction_General_RenderCurrentButtonWithPossibleAlphaTexOnScreenMenuSurface)(); - return; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index b9d58e771..970f6e0d8 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -26905,7 +26905,7 @@ SHC_3BB0A8C1_0x004B6480 | 0.0% | Pending SHC_3BB0A8C1_0x004B64D0 | 0.0% | Pending -SHC_3BB0A8C1_0x004B6500 | 0.0% | Pending +SHC_3BB0A8C1_0x004B6500 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004B6530 | 0.0% | Pending From c350593cff30c51fd4b2cefbf4fca3fb43ce483b Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:11:59 +0200 Subject: [PATCH 163/241] reimplement: SHC_3BB0A8C1_0x0042AC40 100.00% Reimplemented --- .../LobbyMenu/MenuItemRenderFunction_LobbyMenu_Unknown.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/UI/MenuItems/LobbyMenu/MenuItemRenderFunction_LobbyMenu_Unknown.cpp b/src/OpenSHC/UI/MenuItems/LobbyMenu/MenuItemRenderFunction_LobbyMenu_Unknown.cpp index 8ecdcaccf..ce97bf043 100644 --- a/src/OpenSHC/UI/MenuItems/LobbyMenu/MenuItemRenderFunction_LobbyMenu_Unknown.cpp +++ b/src/OpenSHC/UI/MenuItems/LobbyMenu/MenuItemRenderFunction_LobbyMenu_Unknown.cpp @@ -13,12 +13,12 @@ namespace UI { using OpenSHC::UI::Enums::MenuModalType; // FUNCTION: STRONGHOLDCRUSADER 0x0042AC40 - void MenuItemRenderFunction_LobbyMenu_Unknown(int param_1, ...) + void MenuItemRenderFunction_LobbyMenu_Unknown(int textID, ...) { if (DAT_MenuModalComposition1::instance.activeModalDialogID == OpenSHC::UI::Enums::MMT_NONE) { MACRO_CALL_MEMBER( OpenSHC::UI::BottomLeftTextDisplayState_Func::renderCurrentlyDisplayedTextConstructionCost, - DAT_BottomLeftTextDisplayState::ptr)(param_1); + DAT_BottomLeftTextDisplayState::ptr)(textID); } } From 79dcd64044a24f7ad7bdec34aa50adea9aae6e2d Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:11:59 +0200 Subject: [PATCH 164/241] reimplement: SHC_3BB0A8C1_0x004941F0 100.00% Reimplemented --- .../MenuItemActionHandler_NetworkOptions_LeaveButtonUnk.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/UI/MenuItems/NetworkOptions/MenuItemActionHandler_NetworkOptions_LeaveButtonUnk.cpp b/src/OpenSHC/UI/MenuItems/NetworkOptions/MenuItemActionHandler_NetworkOptions_LeaveButtonUnk.cpp index 7fffba49d..36dbdca47 100644 --- a/src/OpenSHC/UI/MenuItems/NetworkOptions/MenuItemActionHandler_NetworkOptions_LeaveButtonUnk.cpp +++ b/src/OpenSHC/UI/MenuItems/NetworkOptions/MenuItemActionHandler_NetworkOptions_LeaveButtonUnk.cpp @@ -9,9 +9,9 @@ namespace UI { namespace NetworkOptions { // FUNCTION: STRONGHOLDCRUSADER 0x004941F0 - void MenuItemActionHandler_NetworkOptions_LeaveButtonUnk(int param_1, ...) + void MenuItemActionHandler_NetworkOptions_LeaveButtonUnk(int action, ...) { - if (param_1 == 0x11) { + if (action == 17) { MACRO_CALL_MEMBER( OpenSHC::UI::MenuTextInputState_Func::popModalDialog, DAT_MenuTextInputState::ptr)(); } From d7033963f050fd08b681f1a0428b1a0f31d11976 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:12:00 +0200 Subject: [PATCH 165/241] reimplement: SHC_3BB0A8C1_0x00492C60 100.00% Reimplemented --- .../MenuItemRenderFunction_SaveLoadMap_Scrollbar.cpp | 4 ++-- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/OpenSHC/UI/MenuItems/SaveLoadMap/MenuItemRenderFunction_SaveLoadMap_Scrollbar.cpp b/src/OpenSHC/UI/MenuItems/SaveLoadMap/MenuItemRenderFunction_SaveLoadMap_Scrollbar.cpp index 6978268bc..1c17ece1d 100644 --- a/src/OpenSHC/UI/MenuItems/SaveLoadMap/MenuItemRenderFunction_SaveLoadMap_Scrollbar.cpp +++ b/src/OpenSHC/UI/MenuItems/SaveLoadMap/MenuItemRenderFunction_SaveLoadMap_Scrollbar.cpp @@ -19,8 +19,8 @@ namespace UI { int param_1, int thumbYPos, int param_3, int thumbHeight, BOOLEnum isDragged) { MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawScrollbar, - DAT_PencilRenderCore::ptr)(DAT_ButtonX::instance, (int)((int)(DAT_ButtonY::instance)), - (int)((int)(DAT_ButtonH::instance)), thumbYPos, isDragged, thumbHeight, 0); + DAT_PencilRenderCore::ptr)(DAT_ButtonX::instance, DAT_ButtonY::instance, DAT_ButtonH::instance, + thumbYPos, isDragged, thumbHeight, 0); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 970f6e0d8..64d8ec1f9 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -23521,7 +23521,7 @@ SHC_3BB0A8C1_0x00492C58 | 0.0% | Pending SHC_3BB0A8C1_0x00492C5C | 0.0% | Pending -SHC_3BB0A8C1_0x00492C60 | 0.0% | Pending +SHC_3BB0A8C1_0x00492C60 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00492C90 | 0.0% | Pending From 046c36b0e399f7ecf7a6ed8c5e7861e39b73cab0 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:12:00 +0200 Subject: [PATCH 166/241] reimplement: SHC_3BB0A8C1_0x00494920 100.00% Reimplemented --- .../MenuItemActionHandler_SaveMap_ReturnKeySave.cpp | 7 ++----- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/src/OpenSHC/UI/MenuItems/SaveMap/MenuItemActionHandler_SaveMap_ReturnKeySave.cpp b/src/OpenSHC/UI/MenuItems/SaveMap/MenuItemActionHandler_SaveMap_ReturnKeySave.cpp index bf6c38819..827340418 100644 --- a/src/OpenSHC/UI/MenuItems/SaveMap/MenuItemActionHandler_SaveMap_ReturnKeySave.cpp +++ b/src/OpenSHC/UI/MenuItems/SaveMap/MenuItemActionHandler_SaveMap_ReturnKeySave.cpp @@ -11,13 +11,10 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x00494920 void MenuItemActionHandler_SaveMap_ReturnKeySave(int param_1, ...) { - bool bVar1; - - bVar1 = DAT_UserTextHandlerState::instance.returnPressed != 0; + int const returnPressed = DAT_UserTextHandlerState::instance.returnPressed; DAT_UserTextHandlerState::instance.returnPressed = 0; - if (bVar1) { + if (returnPressed != 0) { MACRO_CALL(OpenSHC::UI::MenuItems::SaveLoadMap_Func::MenuItemActionHandler_SaveLoadMap_Buttons)(3); - return; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 64d8ec1f9..44b93f9c1 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -24111,7 +24111,7 @@ SHC_3BB0A8C1_0x004948BF | 0.0% | Pending SHC_3BB0A8C1_0x004948C0 | 0.0% | Pending -SHC_3BB0A8C1_0x00494920 | 0.0% | Pending +SHC_3BB0A8C1_0x00494920 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00494950 | 0.0% | Pending From 094052fb77475d1644b68e757103355b6e81aeca Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:12:01 +0200 Subject: [PATCH 167/241] reimplement: SHC_3BB0A8C1_0x0042C060 100.00% Reimplemented --- .../MenuItemRenderFunction_SelectCrusade_Main.cpp | 6 +++--- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/OpenSHC/UI/MenuItems/SelectCrusade/MenuItemRenderFunction_SelectCrusade_Main.cpp b/src/OpenSHC/UI/MenuItems/SelectCrusade/MenuItemRenderFunction_SelectCrusade_Main.cpp index 126a4076a..3db30df2b 100644 --- a/src/OpenSHC/UI/MenuItems/SelectCrusade/MenuItemRenderFunction_SelectCrusade_Main.cpp +++ b/src/OpenSHC/UI/MenuItems/SelectCrusade/MenuItemRenderFunction_SelectCrusade_Main.cpp @@ -13,13 +13,13 @@ namespace UI { using OpenSHC::WindowsHelper::Enums::BOOLEnum; // FUNCTION: STRONGHOLDCRUSADER 0x0042C060 - void MenuItemRenderFunction_SelectCrusade_Main(int param_1, ...) + void MenuItemRenderFunction_SelectCrusade_Main(int skirmishType, ...) { - if (param_1 == -1) { + if (skirmishType == -1) { DAT_HighlightedSkirmishType::instance = 0; } if (DAT_ButtonCurrentlyInteracting::instance != FALSE) { - DAT_HighlightedSkirmishType::instance = param_1; + DAT_HighlightedSkirmishType::instance = skirmishType; } MACRO_CALL(OpenSHC::UI::MenuItems::General_Func:: MenuItemRenderFunction_General_RenderCurrentButtonWithPossibleAlphaTexOnScreenMenuSurface)(); diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 44b93f9c1..4dd1bbb3c 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -7453,7 +7453,7 @@ SHC_3BB0A8C1_0x0042BF00 | 0.0% | Pending SHC_3BB0A8C1_0x0042BFC0 | 0.0% | Pending -SHC_3BB0A8C1_0x0042C060 | 0.0% | Pending +SHC_3BB0A8C1_0x0042C060 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0042C090 | 0.0% | Pending From d203f6afbba0ea74170302aecb6acaf3fcbac267 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:12:01 +0200 Subject: [PATCH 168/241] reimplement: SHC_3BB0A8C1_0x004B1090 100.00% Reimplemented --- ...tionHandler_UnusedWinCondition_Options.cpp | 21 +++++++++---------- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/OpenSHC/UI/MenuItems/Unused/MenuItemActionHandler_UnusedWinCondition_Options.cpp b/src/OpenSHC/UI/MenuItems/Unused/MenuItemActionHandler_UnusedWinCondition_Options.cpp index c8a00648a..b5431f1b5 100644 --- a/src/OpenSHC/UI/MenuItems/Unused/MenuItemActionHandler_UnusedWinCondition_Options.cpp +++ b/src/OpenSHC/UI/MenuItems/Unused/MenuItemActionHandler_UnusedWinCondition_Options.cpp @@ -14,18 +14,17 @@ namespace UI { using OpenSHC::WindowsHelper::Enums::BOOLEnum; // FUNCTION: STRONGHOLDCRUSADER 0x004B1090 - void MenuItemActionHandler_UnusedWinCondition_Options(int param_1, ...) + void MenuItemActionHandler_UnusedWinCondition_Options(int value, ...) { - if (param_1 < (int)DAT_MenuModalComposition1::instance.mbr_0x64) { - DAT_MenuModalComposition1::instance.sliderValue = param_1; - *DAT_MenuModalComposition1::instance.destination = param_1; - MACRO_CALL_MEMBER(OpenSHC::UI::MenuModalComposition_Func::activateModalDialog, - DAT_MenuModalComposition1::ptr)(OpenSHC::UI::Enums::MMT_NONE, FALSE); - if (DAT_MenuModalComposition1::instance.sliderCallbackFunction != (undefined*)0x0) { - - ((void (*)())DAT_MenuModalComposition1::instance.sliderCallbackFunction)(); - return; - } + if (value >= (int)DAT_MenuModalComposition1::instance.mbr_0x64) { + return; + } + DAT_MenuModalComposition1::instance.sliderValue = value; + *DAT_MenuModalComposition1::instance.destination = value; + MACRO_CALL_MEMBER(OpenSHC::UI::MenuModalComposition_Func::activateModalDialog, + DAT_MenuModalComposition1::ptr)(OpenSHC::UI::Enums::MMT_NONE, FALSE); + if (DAT_MenuModalComposition1::instance.sliderCallbackFunction != NULL) { + ((void (*)())DAT_MenuModalComposition1::instance.sliderCallbackFunction)(); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 4dd1bbb3c..32a189a6b 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -25967,7 +25967,7 @@ SHC_3BB0A8C1_0x004B0F70 | 0.0% | Pending SHC_3BB0A8C1_0x004B1000 | 0.0% | Pending -SHC_3BB0A8C1_0x004B1090 | 0.0% | Pending +SHC_3BB0A8C1_0x004B1090 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004B10D0 | 0.0% | Pending From 9c92e685130ad11a79d88a68777b2eec5caf388e Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:12:01 +0200 Subject: [PATCH 169/241] reimplement: SHC_3BB0A8C1_0x004AB540 54.55% Callee header lacks height arg --- .../MenuModalRenderFunction_CreateOrTriggerInvasion.cpp | 1 - status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/OpenSHC/UI/MenuModals/CreateOrTriggerInvasion/MenuModalRenderFunction_CreateOrTriggerInvasion.cpp b/src/OpenSHC/UI/MenuModals/CreateOrTriggerInvasion/MenuModalRenderFunction_CreateOrTriggerInvasion.cpp index 3d70f5cf9..487ac2785 100644 --- a/src/OpenSHC/UI/MenuModals/CreateOrTriggerInvasion/MenuModalRenderFunction_CreateOrTriggerInvasion.cpp +++ b/src/OpenSHC/UI/MenuModals/CreateOrTriggerInvasion/MenuModalRenderFunction_CreateOrTriggerInvasion.cpp @@ -11,7 +11,6 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x004AB540 void MenuModalRenderFunction_CreateOrTriggerInvasion(int x, int y, int width, int height) { - MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)(199, 0x2e, x, y, width); } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 32a189a6b..aeff8c75d 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -25549,7 +25549,7 @@ SHC_3BB0A8C1_0x004AB4E0 | 0.0% | Pending SHC_3BB0A8C1_0x004AB510 | 0.0% | Pending -SHC_3BB0A8C1_0x004AB540 | 0.0% | Pending +SHC_3BB0A8C1_0x004AB540 | 54.5% | Callee header lacks height arg SHC_3BB0A8C1_0x004AB570 | 0.0% | Pending From b6c4d1de0b626fdd7a93a55e9e45f409f8ea5cb4 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:12:02 +0200 Subject: [PATCH 170/241] reimplement: SHC_3BB0A8C1_0x004ABCB0 54.55% Callee header lacks height arg --- .../DisableTroops/MenuModalRenderFunction_DisableTroops.cpp | 1 - status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/OpenSHC/UI/MenuModals/DisableTroops/MenuModalRenderFunction_DisableTroops.cpp b/src/OpenSHC/UI/MenuModals/DisableTroops/MenuModalRenderFunction_DisableTroops.cpp index c3baf876b..8788001e2 100644 --- a/src/OpenSHC/UI/MenuModals/DisableTroops/MenuModalRenderFunction_DisableTroops.cpp +++ b/src/OpenSHC/UI/MenuModals/DisableTroops/MenuModalRenderFunction_DisableTroops.cpp @@ -11,7 +11,6 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x004ABCB0 void MenuModalRenderFunction_DisableTroops(int x, int y, int width, int height) { - MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)(199, 0xbc, x, y, width); } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index aeff8c75d..96864a6a1 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -25619,7 +25619,7 @@ SHC_3BB0A8C1_0x004ABB91 | 0.0% | Pending SHC_3BB0A8C1_0x004ABBA0 | 0.0% | Pending -SHC_3BB0A8C1_0x004ABCB0 | 0.0% | Pending +SHC_3BB0A8C1_0x004ABCB0 | 54.5% | Callee header lacks height arg SHC_3BB0A8C1_0x004ABCE0 | 0.0% | Pending From 02d03b3238d6783cfb422e77546a503074407987 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:12:02 +0200 Subject: [PATCH 171/241] reimplement: SHC_3BB0A8C1_0x004ABCE0 54.55% Callee header lacks height arg --- .../DisableWeapon/MenuModalRenderFunction_DisableWeapon.cpp | 1 - status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/OpenSHC/UI/MenuModals/DisableWeapon/MenuModalRenderFunction_DisableWeapon.cpp b/src/OpenSHC/UI/MenuModals/DisableWeapon/MenuModalRenderFunction_DisableWeapon.cpp index 6b06605f2..6753d1b1a 100644 --- a/src/OpenSHC/UI/MenuModals/DisableWeapon/MenuModalRenderFunction_DisableWeapon.cpp +++ b/src/OpenSHC/UI/MenuModals/DisableWeapon/MenuModalRenderFunction_DisableWeapon.cpp @@ -11,7 +11,6 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x004ABCE0 void MenuModalRenderFunction_DisableWeapon(int x, int y, int width, int height) { - MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)(199, 0xbd, x, y, width); } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 96864a6a1..9b3cf1f5e 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -25621,7 +25621,7 @@ SHC_3BB0A8C1_0x004ABBA0 | 0.0% | Pending SHC_3BB0A8C1_0x004ABCB0 | 54.5% | Callee header lacks height arg -SHC_3BB0A8C1_0x004ABCE0 | 0.0% | Pending +SHC_3BB0A8C1_0x004ABCE0 | 54.5% | Callee header lacks height arg SHC_3BB0A8C1_0x004ABD10 | 0.0% | Pending From 2b3b7229306b49020c349c0ef0236eb9aa07954f Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:12:03 +0200 Subject: [PATCH 172/241] reimplement: SHC_3BB0A8C1_0x00491BF0 54.55% Callee header lacks height arg --- .../MenuModalRenderFunction_EnterTitleOnGameStart.cpp | 1 - status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/OpenSHC/UI/MenuModals/EnterTitleOnGameStart/MenuModalRenderFunction_EnterTitleOnGameStart.cpp b/src/OpenSHC/UI/MenuModals/EnterTitleOnGameStart/MenuModalRenderFunction_EnterTitleOnGameStart.cpp index 2b97c8861..32091663b 100644 --- a/src/OpenSHC/UI/MenuModals/EnterTitleOnGameStart/MenuModalRenderFunction_EnterTitleOnGameStart.cpp +++ b/src/OpenSHC/UI/MenuModals/EnterTitleOnGameStart/MenuModalRenderFunction_EnterTitleOnGameStart.cpp @@ -11,7 +11,6 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x00491BF0 void MenuModalRenderFunction_EnterTitleOnGameStart(int x, int y, int width, int height) { - MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)(5, 6, x, y, width); } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 9b3cf1f5e..e1cee866c 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -23421,7 +23421,7 @@ SHC_3BB0A8C1_0x00491A30 | 0.0% | Pending SHC_3BB0A8C1_0x00491AC0 | 0.0% | Pending -SHC_3BB0A8C1_0x00491BF0 | 0.0% | Pending +SHC_3BB0A8C1_0x00491BF0 | 54.5% | Callee header lacks height arg SHC_3BB0A8C1_0x00491C20 | 0.0% | Pending From e63612027d2474742d292ed8bede8562d45e7298 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:12:03 +0200 Subject: [PATCH 173/241] reimplement: SHC_3BB0A8C1_0x00491E80 54.55% Callee header lacks height arg --- .../GameplayOptions/MenuModalRenderFunction_GameplayOptions.cpp | 1 - status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/OpenSHC/UI/MenuModals/GameplayOptions/MenuModalRenderFunction_GameplayOptions.cpp b/src/OpenSHC/UI/MenuModals/GameplayOptions/MenuModalRenderFunction_GameplayOptions.cpp index 7f1a24733..61ac1d41c 100644 --- a/src/OpenSHC/UI/MenuModals/GameplayOptions/MenuModalRenderFunction_GameplayOptions.cpp +++ b/src/OpenSHC/UI/MenuModals/GameplayOptions/MenuModalRenderFunction_GameplayOptions.cpp @@ -11,7 +11,6 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x00491E80 void MenuModalRenderFunction_GameplayOptions(int x, int y, int width, int height) { - MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)(0x4a, 0x19, x, y, width); } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index e1cee866c..e1194b5c7 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -23431,7 +23431,7 @@ SHC_3BB0A8C1_0x00491CE0 | 0.0% | Pending SHC_3BB0A8C1_0x00491D70 | 0.0% | Pending -SHC_3BB0A8C1_0x00491E80 | 0.0% | Pending +SHC_3BB0A8C1_0x00491E80 | 54.5% | Callee header lacks height arg SHC_3BB0A8C1_0x00491EB0 | 0.0% | Pending From 089e29b174943c44f4d1c8d562de60ed72c15ad4 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:12:03 +0200 Subject: [PATCH 174/241] reimplement: SHC_3BB0A8C1_0x00492A60 54.55% Callee header lacks height arg --- .../NetworkOptions/MenuModalRenderFunction_NetworkOptions.cpp | 1 - status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/OpenSHC/UI/MenuModals/NetworkOptions/MenuModalRenderFunction_NetworkOptions.cpp b/src/OpenSHC/UI/MenuModals/NetworkOptions/MenuModalRenderFunction_NetworkOptions.cpp index edbffc398..fbe74f409 100644 --- a/src/OpenSHC/UI/MenuModals/NetworkOptions/MenuModalRenderFunction_NetworkOptions.cpp +++ b/src/OpenSHC/UI/MenuModals/NetworkOptions/MenuModalRenderFunction_NetworkOptions.cpp @@ -11,7 +11,6 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x00492A60 void MenuModalRenderFunction_NetworkOptions(int x, int y, int width, int height) { - MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)(0x4a, 6, x, y, width); } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index e1194b5c7..5bc6c27b3 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -23501,7 +23501,7 @@ SHC_3BB0A8C1_0x004929BC | 0.0% | Pending SHC_3BB0A8C1_0x004929C0 | 0.0% | Pending -SHC_3BB0A8C1_0x00492A60 | 0.0% | Pending +SHC_3BB0A8C1_0x00492A60 | 54.5% | Callee header lacks height arg SHC_3BB0A8C1_0x00492A90 | 0.0% | Pending From b7705c5b5bf8689cc4c19448582461919438416c Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:12:04 +0200 Subject: [PATCH 175/241] reimplement: SHC_3BB0A8C1_0x004937B0 54.55% Callee header lacks height arg --- .../OnlineQuitGame/MenuModalRenderFunction_OnlineQuitGame.cpp | 1 - status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/OpenSHC/UI/MenuModals/OnlineQuitGame/MenuModalRenderFunction_OnlineQuitGame.cpp b/src/OpenSHC/UI/MenuModals/OnlineQuitGame/MenuModalRenderFunction_OnlineQuitGame.cpp index baac41d78..73affdde2 100644 --- a/src/OpenSHC/UI/MenuModals/OnlineQuitGame/MenuModalRenderFunction_OnlineQuitGame.cpp +++ b/src/OpenSHC/UI/MenuModals/OnlineQuitGame/MenuModalRenderFunction_OnlineQuitGame.cpp @@ -11,7 +11,6 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x004937B0 void MenuModalRenderFunction_OnlineQuitGame(int x, int y, int width, int height) { - MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)(0x4a, 7, x, y, width); } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 5bc6c27b3..8038a9893 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -23629,7 +23629,7 @@ SHC_3BB0A8C1_0x00493690 | 0.0% | Pending SHC_3BB0A8C1_0x004937A4 | 0.0% | Pending -SHC_3BB0A8C1_0x004937B0 | 0.0% | Pending +SHC_3BB0A8C1_0x004937B0 | 54.5% | Callee header lacks height arg SHC_3BB0A8C1_0x004937E0 | 0.0% | Pending From cc567285fef8608d256801977676ee9289b89299 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:12:04 +0200 Subject: [PATCH 176/241] reimplement: SHC_3BB0A8C1_0x00491810 54.55% Callee header lacks height arg --- .../OptionsMenu/MenuModalRenderFunction_OptionsMenu.cpp | 1 - status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/OpenSHC/UI/MenuModals/OptionsMenu/MenuModalRenderFunction_OptionsMenu.cpp b/src/OpenSHC/UI/MenuModals/OptionsMenu/MenuModalRenderFunction_OptionsMenu.cpp index ee8ad7fb2..17c6069f9 100644 --- a/src/OpenSHC/UI/MenuModals/OptionsMenu/MenuModalRenderFunction_OptionsMenu.cpp +++ b/src/OpenSHC/UI/MenuModals/OptionsMenu/MenuModalRenderFunction_OptionsMenu.cpp @@ -11,7 +11,6 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x00491810 void MenuModalRenderFunction_OptionsMenu(int x, int y, int width, int height) { - MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)(0x4a, 1, x, y, width); } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 8038a9893..716fab490 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -23413,7 +23413,7 @@ SHC_3BB0A8C1_0x00491750 | 0.0% | Pending SHC_3BB0A8C1_0x004917C0 | 0.0% | Pending -SHC_3BB0A8C1_0x00491810 | 0.0% | Pending +SHC_3BB0A8C1_0x00491810 | 54.5% | Callee header lacks height arg SHC_3BB0A8C1_0x00491840 | 0.0% | Pending From 0c5644ec122e5d63ece03a4b7882288721f698d3 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:12:04 +0200 Subject: [PATCH 177/241] reimplement: SHC_3BB0A8C1_0x004ABE50 54.55% Callee header lacks height arg --- .../MenuModalRenderFunction_SkirmishConnectionOptions.cpp | 1 - status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/OpenSHC/UI/MenuModals/SkirmishConnectionOptions/MenuModalRenderFunction_SkirmishConnectionOptions.cpp b/src/OpenSHC/UI/MenuModals/SkirmishConnectionOptions/MenuModalRenderFunction_SkirmishConnectionOptions.cpp index 42cef27a6..9749e7db0 100644 --- a/src/OpenSHC/UI/MenuModals/SkirmishConnectionOptions/MenuModalRenderFunction_SkirmishConnectionOptions.cpp +++ b/src/OpenSHC/UI/MenuModals/SkirmishConnectionOptions/MenuModalRenderFunction_SkirmishConnectionOptions.cpp @@ -11,7 +11,6 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x004ABE50 void MenuModalRenderFunction_SkirmishConnectionOptions(int x, int y, int width, int height) { - MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)(0x4f, 0x5d, x, y, width); } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 716fab490..a4f5cbabb 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -25627,7 +25627,7 @@ SHC_3BB0A8C1_0x004ABD10 | 0.0% | Pending SHC_3BB0A8C1_0x004ABD20 | 0.0% | Pending -SHC_3BB0A8C1_0x004ABE50 | 0.0% | Pending +SHC_3BB0A8C1_0x004ABE50 | 54.5% | Callee header lacks height arg SHC_3BB0A8C1_0x004ABE80 | 0.0% | Pending From cee0a9b86b2e27b55fbb4098fc1ece4dc5004a36 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:12:05 +0200 Subject: [PATCH 178/241] reimplement: SHC_3BB0A8C1_0x004ABE80 54.55% Callee header lacks height arg --- .../MenuModalRenderFunction_SkirmishPlayOptions.cpp | 1 - status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/OpenSHC/UI/MenuModals/SkirmishPlayOptions/MenuModalRenderFunction_SkirmishPlayOptions.cpp b/src/OpenSHC/UI/MenuModals/SkirmishPlayOptions/MenuModalRenderFunction_SkirmishPlayOptions.cpp index b652b395c..836dec97f 100644 --- a/src/OpenSHC/UI/MenuModals/SkirmishPlayOptions/MenuModalRenderFunction_SkirmishPlayOptions.cpp +++ b/src/OpenSHC/UI/MenuModals/SkirmishPlayOptions/MenuModalRenderFunction_SkirmishPlayOptions.cpp @@ -11,7 +11,6 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x004ABE80 void MenuModalRenderFunction_SkirmishPlayOptions(int x, int y, int width, int height) { - MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)(0x4f, 0x67, x, y, width); } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index a4f5cbabb..83644fc96 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -25629,7 +25629,7 @@ SHC_3BB0A8C1_0x004ABD20 | 0.0% | Pending SHC_3BB0A8C1_0x004ABE50 | 54.5% | Callee header lacks height arg -SHC_3BB0A8C1_0x004ABE80 | 0.0% | Pending +SHC_3BB0A8C1_0x004ABE80 | 54.5% | Callee header lacks height arg SHC_3BB0A8C1_0x004ABEB0 | 0.0% | Pending From 91d00d44acf219d369a7a6d7a3ce570e5af3ebcd Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:12:05 +0200 Subject: [PATCH 179/241] reimplement: SHC_3BB0A8C1_0x00492660 54.55% Callee header lacks height arg --- .../SoundOptions/MenuModalRenderFunction_SoundOptions.cpp | 1 - status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/OpenSHC/UI/MenuModals/SoundOptions/MenuModalRenderFunction_SoundOptions.cpp b/src/OpenSHC/UI/MenuModals/SoundOptions/MenuModalRenderFunction_SoundOptions.cpp index 95718b0f5..c0b7caa61 100644 --- a/src/OpenSHC/UI/MenuModals/SoundOptions/MenuModalRenderFunction_SoundOptions.cpp +++ b/src/OpenSHC/UI/MenuModals/SoundOptions/MenuModalRenderFunction_SoundOptions.cpp @@ -11,7 +11,6 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x00492660 void MenuModalRenderFunction_SoundOptions(int x, int y, int width, int height) { - MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)(0x4a, 5, x, y, width); } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 83644fc96..177f02373 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -23485,7 +23485,7 @@ SHC_3BB0A8C1_0x00492654 | 0.0% | Pending SHC_3BB0A8C1_0x00492658 | 0.0% | Pending -SHC_3BB0A8C1_0x00492660 | 0.0% | Pending +SHC_3BB0A8C1_0x00492660 | 54.5% | Callee header lacks height arg SHC_3BB0A8C1_0x00492690 | 0.0% | Pending From ae172886000cf86ec47410e0e97ab1ca6afb1829 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:12:06 +0200 Subject: [PATCH 180/241] reimplement: SHC_3BB0A8C1_0x004AB4E0 54.55% Callee header lacks height arg --- .../StartGoods/MenuModalRenderFunction_StartGoods.cpp | 1 - status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/OpenSHC/UI/MenuModals/StartGoods/MenuModalRenderFunction_StartGoods.cpp b/src/OpenSHC/UI/MenuModals/StartGoods/MenuModalRenderFunction_StartGoods.cpp index 25030b297..3c2e9fe50 100644 --- a/src/OpenSHC/UI/MenuModals/StartGoods/MenuModalRenderFunction_StartGoods.cpp +++ b/src/OpenSHC/UI/MenuModals/StartGoods/MenuModalRenderFunction_StartGoods.cpp @@ -11,7 +11,6 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x004AB4E0 void MenuModalRenderFunction_StartGoods(int x, int y, int width, int height) { - MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)(199, 0x29, x, y, width); } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 177f02373..32e95e879 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -25545,7 +25545,7 @@ SHC_3BB0A8C1_0x004AB460 | 0.0% | Pending SHC_3BB0A8C1_0x004AB4B0 | 0.0% | Pending -SHC_3BB0A8C1_0x004AB4E0 | 0.0% | Pending +SHC_3BB0A8C1_0x004AB4E0 | 54.5% | Callee header lacks height arg SHC_3BB0A8C1_0x004AB510 | 0.0% | Pending From 9fb6aa4c6f9a0d788b93a63c13b159ae9f3a3a0b Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:12:06 +0200 Subject: [PATCH 181/241] reimplement: SHC_3BB0A8C1_0x004AB4B0 54.55% Callee header lacks height arg --- .../TraderSettings/MenuModalRenderFunction_TraderSettings.cpp | 1 - status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/OpenSHC/UI/MenuModals/TraderSettings/MenuModalRenderFunction_TraderSettings.cpp b/src/OpenSHC/UI/MenuModals/TraderSettings/MenuModalRenderFunction_TraderSettings.cpp index d600d9d2a..fb9460362 100644 --- a/src/OpenSHC/UI/MenuModals/TraderSettings/MenuModalRenderFunction_TraderSettings.cpp +++ b/src/OpenSHC/UI/MenuModals/TraderSettings/MenuModalRenderFunction_TraderSettings.cpp @@ -11,7 +11,6 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x004AB4B0 void MenuModalRenderFunction_TraderSettings(int x, int y, int width, int height) { - MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)(199, 0x26, x, y, width); } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 32e95e879..163db98b7 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -25543,7 +25543,7 @@ SHC_3BB0A8C1_0x004AB440 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004AB460 | 0.0% | Pending -SHC_3BB0A8C1_0x004AB4B0 | 0.0% | Pending +SHC_3BB0A8C1_0x004AB4B0 | 54.5% | Callee header lacks height arg SHC_3BB0A8C1_0x004AB4E0 | 54.5% | Callee header lacks height arg From a8c004abdf7951aac470987c6c3ece6515e601b9 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:12:06 +0200 Subject: [PATCH 182/241] reimplement: SHC_3BB0A8C1_0x004AC250 54.55% Callee header lacks height arg --- .../TriggerEvent/MenuModalRenderFunction_TriggerEvent.cpp | 1 - status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/OpenSHC/UI/MenuModals/TriggerEvent/MenuModalRenderFunction_TriggerEvent.cpp b/src/OpenSHC/UI/MenuModals/TriggerEvent/MenuModalRenderFunction_TriggerEvent.cpp index c1d9db6bb..b5c8aa984 100644 --- a/src/OpenSHC/UI/MenuModals/TriggerEvent/MenuModalRenderFunction_TriggerEvent.cpp +++ b/src/OpenSHC/UI/MenuModals/TriggerEvent/MenuModalRenderFunction_TriggerEvent.cpp @@ -11,7 +11,6 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x004AC250 void MenuModalRenderFunction_TriggerEvent(int x, int y, int width, int height) { - MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)(199, 0x17, x, y, width); } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 163db98b7..ec0d579dd 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -25779,7 +25779,7 @@ SHC_3BB0A8C1_0x004AC24E | 0.0% | Pending SHC_3BB0A8C1_0x004AC24F | 0.0% | Pending -SHC_3BB0A8C1_0x004AC250 | 0.0% | Pending +SHC_3BB0A8C1_0x004AC250 | 54.5% | Callee header lacks height arg SHC_3BB0A8C1_0x004AC280 | 0.0% | Pending From e695a58e8faa8cb44779ba8ce92b5cdc9a65a05d Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:12:07 +0200 Subject: [PATCH 183/241] reimplement: SHC_3BB0A8C1_0x004AB510 54.55% Callee header lacks height arg --- .../MenuModalRenderFunction_UnusedSiegeAttackingForceUnk.cpp | 1 - status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/OpenSHC/UI/MenuModals/UnusedSiegeAttackingForceUnk/MenuModalRenderFunction_UnusedSiegeAttackingForceUnk.cpp b/src/OpenSHC/UI/MenuModals/UnusedSiegeAttackingForceUnk/MenuModalRenderFunction_UnusedSiegeAttackingForceUnk.cpp index 99dede229..80facb30c 100644 --- a/src/OpenSHC/UI/MenuModals/UnusedSiegeAttackingForceUnk/MenuModalRenderFunction_UnusedSiegeAttackingForceUnk.cpp +++ b/src/OpenSHC/UI/MenuModals/UnusedSiegeAttackingForceUnk/MenuModalRenderFunction_UnusedSiegeAttackingForceUnk.cpp @@ -11,7 +11,6 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x004AB510 void MenuModalRenderFunction_UnusedSiegeAttackingForceUnk(int x, int y, int width, int height) { - MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, DAT_PencilRenderCore::ptr)(199, 0xa4, x, y, width); } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index ec0d579dd..799b2be37 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -25547,7 +25547,7 @@ SHC_3BB0A8C1_0x004AB4B0 | 54.5% | Callee header lacks height arg SHC_3BB0A8C1_0x004AB4E0 | 54.5% | Callee header lacks height arg -SHC_3BB0A8C1_0x004AB510 | 0.0% | Pending +SHC_3BB0A8C1_0x004AB510 | 54.5% | Callee header lacks height arg SHC_3BB0A8C1_0x004AB540 | 54.5% | Callee header lacks height arg From 909a11ff4667e4e6d842790d78ba993550bddc76 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:12:07 +0200 Subject: [PATCH 184/241] reimplement: SHC_3BB0A8C1_0x004D6EF0 100.00% Reimplemented --- .../MenuView_CampaignUnk_DoEveryFrame.cpp | 18 ++++++++---------- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/OpenSHC/UI/MenuViews/CampaignUnk/MenuView_CampaignUnk_DoEveryFrame.cpp b/src/OpenSHC/UI/MenuViews/CampaignUnk/MenuView_CampaignUnk_DoEveryFrame.cpp index 07b8f9b07..3d6f56bb0 100644 --- a/src/OpenSHC/UI/MenuViews/CampaignUnk/MenuView_CampaignUnk_DoEveryFrame.cpp +++ b/src/OpenSHC/UI/MenuViews/CampaignUnk/MenuView_CampaignUnk_DoEveryFrame.cpp @@ -15,18 +15,16 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x004D6EF0 void MenuView_CampaignUnk_DoEveryFrame() { - int iVar1; - - iVar1 = MACRO_CALL(OpenSHC::UI::Helpers_Func::TicksSinceCounterStart)(); - if (iVar1 != 0) { - if (DAT_GameCore::instance.missionNumber1to20 == 1) { - MACRO_CALL_MEMBER(OpenSHC::Game::GameCore_Func::switchToMenuView, DAT_GameCore::ptr)( - OpenSHC::UI::Enums::MVT_SCENARIO_DESCRIPTION, 0); - return; - } + if (MACRO_CALL(OpenSHC::UI::Helpers_Func::TicksSinceCounterStart)() == 0) { + return; + } + if (DAT_GameCore::instance.missionNumber1to20 == 1) { MACRO_CALL_MEMBER(OpenSHC::Game::GameCore_Func::switchToMenuView, DAT_GameCore::ptr)( - OpenSHC::UI::Enums::MVT_UNKNOWN_26_CAMPAIGN_RELATEDUnk, 0); + OpenSHC::UI::Enums::MVT_SCENARIO_DESCRIPTION, 0); + return; } + MACRO_CALL_MEMBER(OpenSHC::Game::GameCore_Func::switchToMenuView, DAT_GameCore::ptr)( + OpenSHC::UI::Enums::MVT_UNKNOWN_26_CAMPAIGN_RELATEDUnk, 0); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 799b2be37..287f346c9 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -35833,7 +35833,7 @@ SHC_3BB0A8C1_0x004D6D14 | 0.0% | Pending SHC_3BB0A8C1_0x004D6D20 | 0.0% | Pending -SHC_3BB0A8C1_0x004D6EF0 | 0.0% | Pending +SHC_3BB0A8C1_0x004D6EF0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004D6F20 | 0.0% | Pending From 8d3de29a7268caa2e5123a25a1cf72bad4ecda7d Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:12:08 +0200 Subject: [PATCH 185/241] reimplement: SHC_3BB0A8C1_0x004BEC10 100.00% Reimplemented --- .../UI/MenuViews/EditScenario/MenuView_EditScenario_Prepare.cpp | 2 +- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/UI/MenuViews/EditScenario/MenuView_EditScenario_Prepare.cpp b/src/OpenSHC/UI/MenuViews/EditScenario/MenuView_EditScenario_Prepare.cpp index 2f84dd1f3..2b14d1176 100644 --- a/src/OpenSHC/UI/MenuViews/EditScenario/MenuView_EditScenario_Prepare.cpp +++ b/src/OpenSHC/UI/MenuViews/EditScenario/MenuView_EditScenario_Prepare.cpp @@ -20,7 +20,7 @@ namespace UI { DAT_TextureRenderCoreObject::ptr)("frontend_builder2.tgx"); MACRO_CALL_MEMBER(OpenSHC::Map::MapPropertiesState_Func::updateEventYearsAndCommitBuildingAvailability, DAT_MapPropertiesState::ptr)(); - DAT_CopyOfScenarioGold::instance = (int)DAT_GameState::instance.mapAndTime.scenarioGold; + DAT_CopyOfScenarioGold::instance = DAT_GameState::instance.mapAndTime.scenarioGold; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 287f346c9..c17ffbae5 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -30491,7 +30491,7 @@ SHC_3BB0A8C1_0x004BEA90 | 0.0% | Pending SHC_3BB0A8C1_0x004BEB20 | 0.0% | Pending -SHC_3BB0A8C1_0x004BEC10 | 0.0% | Pending +SHC_3BB0A8C1_0x004BEC10 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004BEC40 | 0.0% | Pending From a72e9df29863b262c7af797d3e2156e3af44d087 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:12:08 +0200 Subject: [PATCH 186/241] reimplement: SHC_3BB0A8C1_0x004B8050 100.00% Reimplemented --- .../MenuView_General_DoInitial_OnlySetMenuXY.cpp | 15 +++++++-------- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/src/OpenSHC/UI/MenuViews/General/MenuView_General_DoInitial_OnlySetMenuXY.cpp b/src/OpenSHC/UI/MenuViews/General/MenuView_General_DoInitial_OnlySetMenuXY.cpp index 6a008d036..4ff6ecc02 100644 --- a/src/OpenSHC/UI/MenuViews/General/MenuView_General_DoInitial_OnlySetMenuXY.cpp +++ b/src/OpenSHC/UI/MenuViews/General/MenuView_General_DoInitial_OnlySetMenuXY.cpp @@ -14,14 +14,13 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x004B8050 void MenuView_General_DoInitial_OnlySetMenuXY() { - Menu* pMVar1; - - DAT_MenuHandlerState::instance.y = DAT_WindowAndDirectDraw::instance.mainMenuBorderHeight; - DAT_MenuHandlerState::instance.x = DAT_WindowAndDirectDraw::instance.mainMenuBorderWidth; - pMVar1 = DAT_MenuHandlerState::instance.currentMenu; - (DAT_MenuHandlerState::instance.currentMenu)->xPosition - = DAT_WindowAndDirectDraw::instance.mainMenuBorderWidth; - pMVar1->yPosition = DAT_MenuHandlerState::instance.y; + int const y = DAT_WindowAndDirectDraw::instance.mainMenuBorderHeight; + int const x = DAT_WindowAndDirectDraw::instance.mainMenuBorderWidth; + Menu* const menu = DAT_MenuHandlerState::instance.currentMenu; + menu->xPosition = x; + menu->yPosition = y; + DAT_MenuHandlerState::instance.x = x; + DAT_MenuHandlerState::instance.y = y; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index c17ffbae5..dd91c4d55 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -27103,7 +27103,7 @@ SHC_3BB0A8C1_0x004B7FA0 | 0.0% | Pending SHC_3BB0A8C1_0x004B8000 | 0.0% | Pending -SHC_3BB0A8C1_0x004B8050 | 0.0% | Pending +SHC_3BB0A8C1_0x004B8050 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004B8080 | 0.0% | Pending From 9f8c4bc8a9679db0ca143f9b38f345f63549b61c Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:12:08 +0200 Subject: [PATCH 187/241] reimplement: SHC_3BB0A8C1_0x00424770 100.00% Reimplemented --- .../IntroLogos/MenuView_IntroLogos_DoInitial.cpp | 11 +++++------ status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/OpenSHC/UI/MenuViews/IntroLogos/MenuView_IntroLogos_DoInitial.cpp b/src/OpenSHC/UI/MenuViews/IntroLogos/MenuView_IntroLogos_DoInitial.cpp index 53a65393e..dfc890c72 100644 --- a/src/OpenSHC/UI/MenuViews/IntroLogos/MenuView_IntroLogos_DoInitial.cpp +++ b/src/OpenSHC/UI/MenuViews/IntroLogos/MenuView_IntroLogos_DoInitial.cpp @@ -15,14 +15,13 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x00424770 void MenuView_IntroLogos_DoInitial() { - int y = DAT_WindowAndDirectDraw::instance.mainMenuBorderHeight; - int x = DAT_WindowAndDirectDraw::instance.mainMenuBorderWidth; - Menu* pMVar1 = DAT_MenuHandlerState::instance.currentMenu; - pMVar1->xPosition = x; - pMVar1->yPosition = y; + int const y = DAT_WindowAndDirectDraw::instance.mainMenuBorderHeight; + int const x = DAT_WindowAndDirectDraw::instance.mainMenuBorderWidth; + Menu* const menu = DAT_MenuHandlerState::instance.currentMenu; + menu->xPosition = x; + menu->yPosition = y; DAT_MenuHandlerState::instance.x = x; DAT_MenuHandlerState::instance.y = y; - DAT_IntroTimestamp::instance = timeGetTime(); } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index dd91c4d55..6807d7ee8 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -6663,7 +6663,7 @@ SHC_3BB0A8C1_0x00424700 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00424720 | 0.0% | Pending -SHC_3BB0A8C1_0x00424770 | 0.0% | Pending +SHC_3BB0A8C1_0x00424770 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004247A0 | 0.0% | Pending From 1605efb77dca1a9ffac904efbf0dcbb89b42d33e Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:12:09 +0200 Subject: [PATCH 188/241] reimplement: SHC_3BB0A8C1_0x004DCC70 100.00% Reimplemented --- .../Unknown26/MenuView_Unknown26_CampaignRelatedUnk_Prepare.cpp | 2 +- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/UI/MenuViews/Unknown26/MenuView_Unknown26_CampaignRelatedUnk_Prepare.cpp b/src/OpenSHC/UI/MenuViews/Unknown26/MenuView_Unknown26_CampaignRelatedUnk_Prepare.cpp index 4153f1a5d..1dd90c457 100644 --- a/src/OpenSHC/UI/MenuViews/Unknown26/MenuView_Unknown26_CampaignRelatedUnk_Prepare.cpp +++ b/src/OpenSHC/UI/MenuViews/Unknown26/MenuView_Unknown26_CampaignRelatedUnk_Prepare.cpp @@ -15,7 +15,7 @@ namespace UI { { MACRO_CALL(OpenSHC::UI::Credits_Func::ResetCredits)(); MACRO_CALL(OpenSHC::UI::Helpers_Func::BuildIntroLogoSequence)( - DAT_GameCore::instance.missionNumber1to20, (undefined4)((int)(DAT_GameCore::instance.section1066))); + DAT_GameCore::instance.missionNumber1to20, DAT_GameCore::instance.section1066); MACRO_CALL(OpenSHC::Rendering_Func::TicksStartCounter)(); } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 6807d7ee8..71baba3df 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -36257,7 +36257,7 @@ SHC_3BB0A8C1_0x004DC500 | 0.0% | Pending SHC_3BB0A8C1_0x004DC9E0 | 0.0% | Pending -SHC_3BB0A8C1_0x004DCC70 | 0.0% | Pending +SHC_3BB0A8C1_0x004DCC70 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004DCC90 | 0.0% | Pending From 588b0b5482cbd15fc1ce39c6adefa9ddfb68770f Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:12:09 +0200 Subject: [PATCH 189/241] reimplement: SHC_3BB0A8C1_0x004403D0 100.00% Reimplemented --- .../MenuView_UnusedHelpTextEditor_Prepare.cpp | 10 +++++----- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/OpenSHC/UI/MenuViews/UnusedHelpTextEditor/MenuView_UnusedHelpTextEditor_Prepare.cpp b/src/OpenSHC/UI/MenuViews/UnusedHelpTextEditor/MenuView_UnusedHelpTextEditor_Prepare.cpp index 96986c7e2..9c8c5dbb6 100644 --- a/src/OpenSHC/UI/MenuViews/UnusedHelpTextEditor/MenuView_UnusedHelpTextEditor_Prepare.cpp +++ b/src/OpenSHC/UI/MenuViews/UnusedHelpTextEditor/MenuView_UnusedHelpTextEditor_Prepare.cpp @@ -16,11 +16,11 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x004403D0 void MenuView_UnusedHelpTextEditor_Prepare() { - int y = DAT_WindowAndDirectDraw::instance.mainMenuBorderHeight; - int x = DAT_WindowAndDirectDraw::instance.mainMenuBorderWidth; - Menu* pMVar1 = DAT_MenuHandlerState::instance.currentMenu; - pMVar1->xPosition = x; - pMVar1->yPosition = y; + int const y = DAT_WindowAndDirectDraw::instance.mainMenuBorderHeight; + int const x = DAT_WindowAndDirectDraw::instance.mainMenuBorderWidth; + Menu* const menu = DAT_MenuHandlerState::instance.currentMenu; + menu->xPosition = x; + menu->yPosition = y; DAT_MenuHandlerState::instance.y = y; DAT_MenuHandlerState::instance.x = x; MACRO_CALL_MEMBER( diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 71baba3df..9b706dbd9 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -13631,7 +13631,7 @@ SHC_3BB0A8C1_0x00440280 | 0.0% | Pending SHC_3BB0A8C1_0x00440360 | 0.0% | Pending -SHC_3BB0A8C1_0x004403D0 | 0.0% | Pending +SHC_3BB0A8C1_0x004403D0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00440400 | 100.0% | Reimplemented From 785b4d71b1660d2af0c9656176d2266e02568a26 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:12:10 +0200 Subject: [PATCH 190/241] reimplement: SHC_3BB0A8C1_0x0045D0B0 100.00% Reimplemented --- src/OpenSHC/UI/Rendering/AlphaAndButtonSurface/freeMemory.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/OpenSHC/UI/Rendering/AlphaAndButtonSurface/freeMemory.cpp b/src/OpenSHC/UI/Rendering/AlphaAndButtonSurface/freeMemory.cpp index 6b4777c8d..f094b729b 100644 --- a/src/OpenSHC/UI/Rendering/AlphaAndButtonSurface/freeMemory.cpp +++ b/src/OpenSHC/UI/Rendering/AlphaAndButtonSurface/freeMemory.cpp @@ -8,7 +8,7 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x0045D0B0 void AlphaAndButtonSurface::freeMemory() { - if (this->surfacePtr != (ushort*)0x0) { + if (this->surfacePtr != NULL) { MACRO_CALL(OpenSHC::OS_Func::_free_base)(this->surfacePtr); } } From 75a2f0ad663168a6789d2b79152c905ca2beb04b Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:12:10 +0200 Subject: [PATCH 191/241] reimplement: SHC_3BB0A8C1_0x00468C50 100.00% Reimplemented --- .../UI/Rendering/PencilRenderCore/setupPencilSurface.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/OpenSHC/UI/Rendering/PencilRenderCore/setupPencilSurface.cpp b/src/OpenSHC/UI/Rendering/PencilRenderCore/setupPencilSurface.cpp index ccdfa10e2..8173ed415 100644 --- a/src/OpenSHC/UI/Rendering/PencilRenderCore/setupPencilSurface.cpp +++ b/src/OpenSHC/UI/Rendering/PencilRenderCore/setupPencilSurface.cpp @@ -12,12 +12,11 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x00468C50 void PencilRenderCore::setupPencilSurface() { - Ghidra::ushort* surface = DAT_WindowAndDirectDraw::instance.surfacePointer_mapGame; + ushort* surface = DAT_WindowAndDirectDraw::instance.surfacePointer_mapGame; if (this->surfaceTarget == OpenSHC::Rendering::Enums::RT_SCREEN_MENU) { surface = DAT_WindowAndDirectDraw::instance.surfacePointer_screenMenu; } this->surfacePtr = surface; - if (this->surfaceTarget != OpenSHC::Rendering::Enums::RT_SCREEN_MENU) { this->horizontalByteSize = 8112; return; From b33c13c4e0ddf65902b620905dabe9a46cb13429 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:12:10 +0200 Subject: [PATCH 192/241] reimplement: SHC_3BB0A8C1_0x004548D0 100.00% Reimplemented --- .../UI/Rendering/TextureRenderCore/CheckGfxResourceExists.cpp | 4 ++-- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/OpenSHC/UI/Rendering/TextureRenderCore/CheckGfxResourceExists.cpp b/src/OpenSHC/UI/Rendering/TextureRenderCore/CheckGfxResourceExists.cpp index 36b666ba5..2ca5c06f7 100644 --- a/src/OpenSHC/UI/Rendering/TextureRenderCore/CheckGfxResourceExists.cpp +++ b/src/OpenSHC/UI/Rendering/TextureRenderCore/CheckGfxResourceExists.cpp @@ -14,10 +14,10 @@ namespace UI { using OpenSHC::WindowsHelper::Enums::BOOLEnum; // FUNCTION: STRONGHOLDCRUSADER 0x004548D0 - BOOLEnum TextureRenderCore::checkGfxResourceExists(char* param_1) + BOOLEnum TextureRenderCore::checkGfxResourceExists(char* fileName) { MACRO_CALL_MEMBER(OpenSHC::IO::ResourceManager_Func::resolveResourceFileName, DAT_ResourceManager::ptr)( - OpenSHC::IO::FRT_GFX, (char const*)((int)(param_1))); + OpenSHC::IO::FRT_GFX, fileName); return MACRO_CALL_MEMBER( OpenSHC::IO::ResourceManager_Func::getCurrentResourceSize, DAT_ResourceManager::ptr)() != 0; diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 9b706dbd9..282c4a2a8 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -16979,7 +16979,7 @@ SHC_3BB0A8C1_0x00454700 | 0.0% | Pending SHC_3BB0A8C1_0x004547C0 | 0.0% | Pending -SHC_3BB0A8C1_0x004548D0 | 0.0% | Pending +SHC_3BB0A8C1_0x004548D0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00454900 | 0.0% | Pending From a1e9f0d2524c5183af074611aeac829eb4ac0f87 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:12:11 +0200 Subject: [PATCH 193/241] reimplement: SHC_3BB0A8C1_0x004549C0 40.00% Register allocation differs --- .../checkIfGfxTgxStartsWithTransparentPixels.cpp | 3 +-- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/OpenSHC/UI/Rendering/TextureRenderCore/checkIfGfxTgxStartsWithTransparentPixels.cpp b/src/OpenSHC/UI/Rendering/TextureRenderCore/checkIfGfxTgxStartsWithTransparentPixels.cpp index 12eaed2c7..cec9350f8 100644 --- a/src/OpenSHC/UI/Rendering/TextureRenderCore/checkIfGfxTgxStartsWithTransparentPixels.cpp +++ b/src/OpenSHC/UI/Rendering/TextureRenderCore/checkIfGfxTgxStartsWithTransparentPixels.cpp @@ -12,8 +12,7 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x004549C0 BOOLEnum TextureRenderCore::checkIfGfxTgxStartsWithTransparentPixels(int gfxIndex) { - // fixme: compiler picks different registers - return (*(byte*)(this->loadedGfxArray[gfxIndex].offsetInBuffer + 8 + (int)this->gmAndGfxImageDataBuffer) + return (((byte*)this->gmAndGfxImageDataBuffer)[this->loadedGfxArray[gfxIndex].offsetInBuffer + 8] & OpenSHC::IO::Graphics::TT_TGX_PIXEL_HEADER) == OpenSHC::IO::Graphics::TT_TRANSPARENT_PIXELS; } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 282c4a2a8..3058ec084 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -16987,7 +16987,7 @@ SHC_3BB0A8C1_0x00454960 | 0.0% | Pending SHC_3BB0A8C1_0x00454990 | 0.0% | Pending -SHC_3BB0A8C1_0x004549C0 | 100.0% | Different register allocation +SHC_3BB0A8C1_0x004549C0 | 40.0% | Register allocation differs SHC_3BB0A8C1_0x004549F0 | 0.0% | Pending From 33ae39428a611d1471d00961689321b82237989d Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:12:11 +0200 Subject: [PATCH 194/241] reimplement: SHC_3BB0A8C1_0x0044CCC0 100.00% Reimplemented --- .../Rendering/TextureRenderCore/setMapSurfaceHeightRangeUnk.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/OpenSHC/UI/Rendering/TextureRenderCore/setMapSurfaceHeightRangeUnk.cpp b/src/OpenSHC/UI/Rendering/TextureRenderCore/setMapSurfaceHeightRangeUnk.cpp index aadc8d8f8..2d4d683b0 100644 --- a/src/OpenSHC/UI/Rendering/TextureRenderCore/setMapSurfaceHeightRangeUnk.cpp +++ b/src/OpenSHC/UI/Rendering/TextureRenderCore/setMapSurfaceHeightRangeUnk.cpp @@ -8,7 +8,7 @@ namespace UI { void TextureRenderCore::setMapSurfaceHeightRangeUnk() { this->mapGameSurfaceHeightRange.start = 0; - this->mapGameSurfaceHeightRange.end = 0x81b; + this->mapGameSurfaceHeightRange.end = 2075; } } // namespace Rendering From fe4fefc077958e0db1dc9c4fc3b776c1a6fa818c Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:12:11 +0200 Subject: [PATCH 195/241] reimplement: SHC_3BB0A8C1_0x00454990 100.00% Reimplemented --- .../UI/Rendering/TextureRenderCore/setRenderingRect.cpp | 4 ++-- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/OpenSHC/UI/Rendering/TextureRenderCore/setRenderingRect.cpp b/src/OpenSHC/UI/Rendering/TextureRenderCore/setRenderingRect.cpp index fce1d8ae5..fc89f9c71 100644 --- a/src/OpenSHC/UI/Rendering/TextureRenderCore/setRenderingRect.cpp +++ b/src/OpenSHC/UI/Rendering/TextureRenderCore/setRenderingRect.cpp @@ -5,12 +5,12 @@ namespace UI { namespace Rendering { // FUNCTION: STRONGHOLDCRUSADER 0x00454990 - void TextureRenderCore::setRenderingRect(int xPos, int yPos, int width, int heigth) + void TextureRenderCore::setRenderingRect(int xPos, int yPos, int width, int height) { this->renderingRect_16c854.left = xPos; this->renderingRect_16c854.top = yPos; this->renderingRect_16c854.right = width; - this->renderingRect_16c854.bottom = heigth; + this->renderingRect_16c854.bottom = height; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 3058ec084..d3d5e97f6 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -16985,7 +16985,7 @@ SHC_3BB0A8C1_0x00454900 | 0.0% | Pending SHC_3BB0A8C1_0x00454960 | 0.0% | Pending -SHC_3BB0A8C1_0x00454990 | 0.0% | Pending +SHC_3BB0A8C1_0x00454990 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004549C0 | 40.0% | Register allocation differs From ce85193394d91af16c266e202f5bc8d831846a0f Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:12:12 +0200 Subject: [PATCH 196/241] reimplement: SHC_3BB0A8C1_0x00455270 100.00% Reimplemented --- .../TextureRenderCore/transformTgxCompressedImageToRGB565.cpp | 2 +- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/UI/Rendering/TextureRenderCore/transformTgxCompressedImageToRGB565.cpp b/src/OpenSHC/UI/Rendering/TextureRenderCore/transformTgxCompressedImageToRGB565.cpp index b9e047b4c..4038a632a 100644 --- a/src/OpenSHC/UI/Rendering/TextureRenderCore/transformTgxCompressedImageToRGB565.cpp +++ b/src/OpenSHC/UI/Rendering/TextureRenderCore/transformTgxCompressedImageToRGB565.cpp @@ -14,7 +14,7 @@ namespace UI { void TextureRenderCore::transformTgxCompressedImageToRGB565(int imageIndex) { MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::TextureRenderCore_Func::transformTgxFromRGB555ToRGB565, this)( - (ushort*)(&(((byte*)this->gmProcessedImageData)[DAT_GMImageOffsets::instance[imageIndex]])), + (ushort*)((byte*)this->gmProcessedImageData + DAT_GMImageOffsets::instance[imageIndex]), DAT_GMImageSizes::instance[imageIndex]); } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index d3d5e97f6..4da3915cb 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -17009,7 +17009,7 @@ SHC_3BB0A8C1_0x00455050 | 0.0% | Pending SHC_3BB0A8C1_0x00455250 | 0.0% | Pending -SHC_3BB0A8C1_0x00455270 | 0.0% | Pending +SHC_3BB0A8C1_0x00455270 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00455290 | 0.0% | Pending From 263870051c93d0a03c5ad1658628693055d681c5 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:12:12 +0200 Subject: [PATCH 197/241] reimplement: SHC_3BB0A8C1_0x0046CED0 100.00% Reimplemented --- src/OpenSHC/Util/Timing/Stopwatch/start.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/OpenSHC/Util/Timing/Stopwatch/start.cpp b/src/OpenSHC/Util/Timing/Stopwatch/start.cpp index c3a691974..7dd58e45f 100644 --- a/src/OpenSHC/Util/Timing/Stopwatch/start.cpp +++ b/src/OpenSHC/Util/Timing/Stopwatch/start.cpp @@ -10,8 +10,7 @@ namespace Util { // FUNCTION: STRONGHOLDCRUSADER 0x0046CED0 void Stopwatch::start() { - DWORD _currentTime = timeGetTime(); - this->startTime_0x8 = _currentTime; + this->startTime_0x8 = timeGetTime(); this->running_0x4 = TRUE; } From 565325606fe99b4c0f0a568a65dae0c119947ca2 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:12:12 +0200 Subject: [PATCH 198/241] reimplement: SHC_3BB0A8C1_0x0046CEF0 100.00% Reimplemented --- src/OpenSHC/Util/Timing/Stopwatch/stop.cpp | 12 +++++------- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/OpenSHC/Util/Timing/Stopwatch/stop.cpp b/src/OpenSHC/Util/Timing/Stopwatch/stop.cpp index 139998789..95427de42 100644 --- a/src/OpenSHC/Util/Timing/Stopwatch/stop.cpp +++ b/src/OpenSHC/Util/Timing/Stopwatch/stop.cpp @@ -10,14 +10,12 @@ namespace Util { // FUNCTION: STRONGHOLDCRUSADER 0x0046CEF0 void Stopwatch::stop() { - DWORD _currentTime; - - if (this->running_0x4 != FALSE) { - _currentTime = timeGetTime(); - this->stopTime_0xc = _currentTime; - this->running_0x4 = FALSE; - this->duration_0x0 = _currentTime - this->startTime_0x8; + if (this->running_0x4 == FALSE) { + return; } + this->stopTime_0xc = timeGetTime(); + this->running_0x4 = FALSE; + this->duration_0x0 = this->stopTime_0xc - this->startTime_0x8; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 4da3915cb..9d53a71ac 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -20971,7 +20971,7 @@ SHC_3BB0A8C1_0x0046CEC0 | 0.0% | Pending SHC_3BB0A8C1_0x0046CED0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0046CEF0 | 0.0% | Pending +SHC_3BB0A8C1_0x0046CEF0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0046CF10 | 0.0% | Pending From e5708d1af6e2e752d86774d0999438a2c5602e0b Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:13:19 +0200 Subject: [PATCH 199/241] reimplement: SHC_3BB0A8C1_0x004B7F60 100.00% Reimplemented --- src/OpenSHC/UI/Helpers/PlayAMessageFromAI.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/UI/Helpers/PlayAMessageFromAI.cpp b/src/OpenSHC/UI/Helpers/PlayAMessageFromAI.cpp index cd0c6e5a7..c97e51f04 100644 --- a/src/OpenSHC/UI/Helpers/PlayAMessageFromAI.cpp +++ b/src/OpenSHC/UI/Helpers/PlayAMessageFromAI.cpp @@ -9,8 +9,8 @@ namespace UI { namespace Helpers { /* - Plays a WAV sound effect from the mission aesthetics data table. param_1 is the column index - (0-16) and param_2 is the row index (1-33). Bounds-checks both params and calls + Plays a WAV sound effect from the mission aesthetics data table. messageIndex is the column index + (0-16) and speakerIndex is the row index (1-33). Bounds-checks both params and calls SFXState::playWAVSFX with the resolved filename pointer. renamed by: Claude Sonnet 4.6 From 85ca0d5fa918b87062eb85faa6f7f2159b925afa Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 01:13:20 +0200 Subject: [PATCH 200/241] [OPENSHC]: style pass for SetTutorialBuildingActionState Co-Authored-By: Claude Opus 5.5 --- src/OpenSHC/UI/Helpers/SetTutorialBuildingActionState.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/OpenSHC/UI/Helpers/SetTutorialBuildingActionState.cpp b/src/OpenSHC/UI/Helpers/SetTutorialBuildingActionState.cpp index bc9ef78d6..2674f69d3 100644 --- a/src/OpenSHC/UI/Helpers/SetTutorialBuildingActionState.cpp +++ b/src/OpenSHC/UI/Helpers/SetTutorialBuildingActionState.cpp @@ -10,7 +10,7 @@ namespace UI { using OpenSHC::Map::Buildings::BuildingType; /* - Sets DAT_00df5588 (tutorial action type) and DAT_00df558c (building type) unless param_1 is 0xb + Sets DAT_00df5588 (tutorial action type) and DAT_00df558c (building type) unless actionState is 11 and DAT_00df5588 is already 7 — in which case the update is skipped to avoid overwriting a pending state. Used to record which building-related action the player last performed for tutorial step evaluation. @@ -19,10 +19,10 @@ namespace UI { */ // FUNCTION: STRONGHOLDCRUSADER 0x004BC690 - void Helpers::SetTutorialBuildingActionState(int param_1, BuildingType buildingType) + void Helpers::SetTutorialBuildingActionState(int actionState, BuildingType buildingType) { - if ((param_1 != 0xb) || (DAT_00df5588::instance != 7)) { - DAT_00df5588::instance = param_1; + if (actionState != 11 || DAT_00df5588::instance != 7) { + DAT_00df5588::instance = actionState; DAT_00df558c::instance = buildingType; } } From dd67b54bcaadea4c1c5d165214a23f6e18b17756 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 06:42:50 +0200 Subject: [PATCH 201/241] reimplement: SHC_3BB0A8C1_0x004AB540 100.00% Reimplemented --- .../MenuModalRenderFunction_CreateOrTriggerInvasion.cpp | 2 +- src/OpenSHC/UI/Rendering/PencilRenderCore.hpp | 2 +- status/addresses-SHC-3BB0A8C1.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/OpenSHC/UI/MenuModals/CreateOrTriggerInvasion/MenuModalRenderFunction_CreateOrTriggerInvasion.cpp b/src/OpenSHC/UI/MenuModals/CreateOrTriggerInvasion/MenuModalRenderFunction_CreateOrTriggerInvasion.cpp index 487ac2785..615e9f6e7 100644 --- a/src/OpenSHC/UI/MenuModals/CreateOrTriggerInvasion/MenuModalRenderFunction_CreateOrTriggerInvasion.cpp +++ b/src/OpenSHC/UI/MenuModals/CreateOrTriggerInvasion/MenuModalRenderFunction_CreateOrTriggerInvasion.cpp @@ -12,7 +12,7 @@ namespace UI { void MenuModalRenderFunction_CreateOrTriggerInvasion(int x, int y, int width, int height) { MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, - DAT_PencilRenderCore::ptr)(199, 0x2e, x, y, width); + DAT_PencilRenderCore::ptr)(199, 0x2e, x, y, width, height); } } diff --git a/src/OpenSHC/UI/Rendering/PencilRenderCore.hpp b/src/OpenSHC/UI/Rendering/PencilRenderCore.hpp index e477ec568..fa9efe66b 100644 --- a/src/OpenSHC/UI/Rendering/PencilRenderCore.hpp +++ b/src/OpenSHC/UI/Rendering/PencilRenderCore.hpp @@ -103,7 +103,7 @@ namespace UI { void drawLine(int x1, int y1, int x2, int y2, ushort color); void drawHeaderTextBanner( - int textGroupIndex, int textNumInGroup, int xPos, int yPos, int width, int param_6); + int textGroupIndex, int textNumInGroup, int xPos, int yPos, int width, int height); }; static_assert_cpp98_obj(sizeof(PencilRenderCore) == 66, PencilRenderCore); diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 9d53a71ac..22a6b7207 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -25549,7 +25549,7 @@ SHC_3BB0A8C1_0x004AB4E0 | 54.5% | Callee header lacks height arg SHC_3BB0A8C1_0x004AB510 | 54.5% | Callee header lacks height arg -SHC_3BB0A8C1_0x004AB540 | 54.5% | Callee header lacks height arg +SHC_3BB0A8C1_0x004AB540 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004AB570 | 0.0% | Pending From beed8845793195ef245fb73304bbb844f839cdbe Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 06:42:51 +0200 Subject: [PATCH 202/241] reimplement: SHC_3BB0A8C1_0x004ABCB0 100.00% Reimplemented --- .../DisableTroops/MenuModalRenderFunction_DisableTroops.cpp | 2 +- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/UI/MenuModals/DisableTroops/MenuModalRenderFunction_DisableTroops.cpp b/src/OpenSHC/UI/MenuModals/DisableTroops/MenuModalRenderFunction_DisableTroops.cpp index 8788001e2..343c0bbc3 100644 --- a/src/OpenSHC/UI/MenuModals/DisableTroops/MenuModalRenderFunction_DisableTroops.cpp +++ b/src/OpenSHC/UI/MenuModals/DisableTroops/MenuModalRenderFunction_DisableTroops.cpp @@ -12,7 +12,7 @@ namespace UI { void MenuModalRenderFunction_DisableTroops(int x, int y, int width, int height) { MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, - DAT_PencilRenderCore::ptr)(199, 0xbc, x, y, width); + DAT_PencilRenderCore::ptr)(199, 0xbc, x, y, width, height); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 22a6b7207..d71ca2e7d 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -25619,7 +25619,7 @@ SHC_3BB0A8C1_0x004ABB91 | 0.0% | Pending SHC_3BB0A8C1_0x004ABBA0 | 0.0% | Pending -SHC_3BB0A8C1_0x004ABCB0 | 54.5% | Callee header lacks height arg +SHC_3BB0A8C1_0x004ABCB0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004ABCE0 | 54.5% | Callee header lacks height arg From 243f4bc5278eea8c9494c4155ede728a8d08cbd4 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 06:42:51 +0200 Subject: [PATCH 203/241] reimplement: SHC_3BB0A8C1_0x004ABCE0 100.00% Reimplemented --- .../DisableWeapon/MenuModalRenderFunction_DisableWeapon.cpp | 2 +- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/UI/MenuModals/DisableWeapon/MenuModalRenderFunction_DisableWeapon.cpp b/src/OpenSHC/UI/MenuModals/DisableWeapon/MenuModalRenderFunction_DisableWeapon.cpp index 6753d1b1a..d497fc976 100644 --- a/src/OpenSHC/UI/MenuModals/DisableWeapon/MenuModalRenderFunction_DisableWeapon.cpp +++ b/src/OpenSHC/UI/MenuModals/DisableWeapon/MenuModalRenderFunction_DisableWeapon.cpp @@ -12,7 +12,7 @@ namespace UI { void MenuModalRenderFunction_DisableWeapon(int x, int y, int width, int height) { MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, - DAT_PencilRenderCore::ptr)(199, 0xbd, x, y, width); + DAT_PencilRenderCore::ptr)(199, 0xbd, x, y, width, height); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index d71ca2e7d..56e86a037 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -25621,7 +25621,7 @@ SHC_3BB0A8C1_0x004ABBA0 | 0.0% | Pending SHC_3BB0A8C1_0x004ABCB0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004ABCE0 | 54.5% | Callee header lacks height arg +SHC_3BB0A8C1_0x004ABCE0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004ABD10 | 0.0% | Pending From d10a82b40e641e93d2cc6c8121ba49f03550dd2b Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 06:42:51 +0200 Subject: [PATCH 204/241] reimplement: SHC_3BB0A8C1_0x00491BF0 100.00% Reimplemented --- .../MenuModalRenderFunction_EnterTitleOnGameStart.cpp | 2 +- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/UI/MenuModals/EnterTitleOnGameStart/MenuModalRenderFunction_EnterTitleOnGameStart.cpp b/src/OpenSHC/UI/MenuModals/EnterTitleOnGameStart/MenuModalRenderFunction_EnterTitleOnGameStart.cpp index 32091663b..8d5e6c26e 100644 --- a/src/OpenSHC/UI/MenuModals/EnterTitleOnGameStart/MenuModalRenderFunction_EnterTitleOnGameStart.cpp +++ b/src/OpenSHC/UI/MenuModals/EnterTitleOnGameStart/MenuModalRenderFunction_EnterTitleOnGameStart.cpp @@ -12,7 +12,7 @@ namespace UI { void MenuModalRenderFunction_EnterTitleOnGameStart(int x, int y, int width, int height) { MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, - DAT_PencilRenderCore::ptr)(5, 6, x, y, width); + DAT_PencilRenderCore::ptr)(5, 6, x, y, width, height); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 56e86a037..b8ce8e1e0 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -23421,7 +23421,7 @@ SHC_3BB0A8C1_0x00491A30 | 0.0% | Pending SHC_3BB0A8C1_0x00491AC0 | 0.0% | Pending -SHC_3BB0A8C1_0x00491BF0 | 54.5% | Callee header lacks height arg +SHC_3BB0A8C1_0x00491BF0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00491C20 | 0.0% | Pending From b3d5d2bdf6ba62e24a0f163da1eb91eaf8ba07ef Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 06:42:52 +0200 Subject: [PATCH 205/241] reimplement: SHC_3BB0A8C1_0x00491E80 100.00% Reimplemented --- .../GameplayOptions/MenuModalRenderFunction_GameplayOptions.cpp | 2 +- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/UI/MenuModals/GameplayOptions/MenuModalRenderFunction_GameplayOptions.cpp b/src/OpenSHC/UI/MenuModals/GameplayOptions/MenuModalRenderFunction_GameplayOptions.cpp index 61ac1d41c..061906c47 100644 --- a/src/OpenSHC/UI/MenuModals/GameplayOptions/MenuModalRenderFunction_GameplayOptions.cpp +++ b/src/OpenSHC/UI/MenuModals/GameplayOptions/MenuModalRenderFunction_GameplayOptions.cpp @@ -12,7 +12,7 @@ namespace UI { void MenuModalRenderFunction_GameplayOptions(int x, int y, int width, int height) { MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, - DAT_PencilRenderCore::ptr)(0x4a, 0x19, x, y, width); + DAT_PencilRenderCore::ptr)(0x4a, 0x19, x, y, width, height); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index b8ce8e1e0..194cfeb6b 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -23431,7 +23431,7 @@ SHC_3BB0A8C1_0x00491CE0 | 0.0% | Pending SHC_3BB0A8C1_0x00491D70 | 0.0% | Pending -SHC_3BB0A8C1_0x00491E80 | 54.5% | Callee header lacks height arg +SHC_3BB0A8C1_0x00491E80 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00491EB0 | 0.0% | Pending From 7ca7c92a858b8c1a5b8c938a17cc979cbdc0e1a1 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 06:42:52 +0200 Subject: [PATCH 206/241] reimplement: SHC_3BB0A8C1_0x00492A60 100.00% Reimplemented --- .../NetworkOptions/MenuModalRenderFunction_NetworkOptions.cpp | 2 +- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/UI/MenuModals/NetworkOptions/MenuModalRenderFunction_NetworkOptions.cpp b/src/OpenSHC/UI/MenuModals/NetworkOptions/MenuModalRenderFunction_NetworkOptions.cpp index fbe74f409..d234390ae 100644 --- a/src/OpenSHC/UI/MenuModals/NetworkOptions/MenuModalRenderFunction_NetworkOptions.cpp +++ b/src/OpenSHC/UI/MenuModals/NetworkOptions/MenuModalRenderFunction_NetworkOptions.cpp @@ -12,7 +12,7 @@ namespace UI { void MenuModalRenderFunction_NetworkOptions(int x, int y, int width, int height) { MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, - DAT_PencilRenderCore::ptr)(0x4a, 6, x, y, width); + DAT_PencilRenderCore::ptr)(0x4a, 6, x, y, width, height); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 194cfeb6b..17188ba85 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -23501,7 +23501,7 @@ SHC_3BB0A8C1_0x004929BC | 0.0% | Pending SHC_3BB0A8C1_0x004929C0 | 0.0% | Pending -SHC_3BB0A8C1_0x00492A60 | 54.5% | Callee header lacks height arg +SHC_3BB0A8C1_0x00492A60 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00492A90 | 0.0% | Pending From aaf95c93b00a4e1a080aa52fd914b918ac43b43a Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 06:42:53 +0200 Subject: [PATCH 207/241] reimplement: SHC_3BB0A8C1_0x004937B0 100.00% Reimplemented --- .../OnlineQuitGame/MenuModalRenderFunction_OnlineQuitGame.cpp | 2 +- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/UI/MenuModals/OnlineQuitGame/MenuModalRenderFunction_OnlineQuitGame.cpp b/src/OpenSHC/UI/MenuModals/OnlineQuitGame/MenuModalRenderFunction_OnlineQuitGame.cpp index 73affdde2..fbba87f66 100644 --- a/src/OpenSHC/UI/MenuModals/OnlineQuitGame/MenuModalRenderFunction_OnlineQuitGame.cpp +++ b/src/OpenSHC/UI/MenuModals/OnlineQuitGame/MenuModalRenderFunction_OnlineQuitGame.cpp @@ -12,7 +12,7 @@ namespace UI { void MenuModalRenderFunction_OnlineQuitGame(int x, int y, int width, int height) { MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, - DAT_PencilRenderCore::ptr)(0x4a, 7, x, y, width); + DAT_PencilRenderCore::ptr)(0x4a, 7, x, y, width, height); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 17188ba85..47678aaa7 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -23629,7 +23629,7 @@ SHC_3BB0A8C1_0x00493690 | 0.0% | Pending SHC_3BB0A8C1_0x004937A4 | 0.0% | Pending -SHC_3BB0A8C1_0x004937B0 | 54.5% | Callee header lacks height arg +SHC_3BB0A8C1_0x004937B0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004937E0 | 0.0% | Pending From 04df9b17b9bb748db38c43e046263e4dfc0b2f92 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 06:42:53 +0200 Subject: [PATCH 208/241] reimplement: SHC_3BB0A8C1_0x00491810 100.00% Reimplemented --- .../OptionsMenu/MenuModalRenderFunction_OptionsMenu.cpp | 2 +- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/UI/MenuModals/OptionsMenu/MenuModalRenderFunction_OptionsMenu.cpp b/src/OpenSHC/UI/MenuModals/OptionsMenu/MenuModalRenderFunction_OptionsMenu.cpp index 17c6069f9..cae175e53 100644 --- a/src/OpenSHC/UI/MenuModals/OptionsMenu/MenuModalRenderFunction_OptionsMenu.cpp +++ b/src/OpenSHC/UI/MenuModals/OptionsMenu/MenuModalRenderFunction_OptionsMenu.cpp @@ -12,7 +12,7 @@ namespace UI { void MenuModalRenderFunction_OptionsMenu(int x, int y, int width, int height) { MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, - DAT_PencilRenderCore::ptr)(0x4a, 1, x, y, width); + DAT_PencilRenderCore::ptr)(0x4a, 1, x, y, width, height); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 47678aaa7..01dcedd2a 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -23413,7 +23413,7 @@ SHC_3BB0A8C1_0x00491750 | 0.0% | Pending SHC_3BB0A8C1_0x004917C0 | 0.0% | Pending -SHC_3BB0A8C1_0x00491810 | 54.5% | Callee header lacks height arg +SHC_3BB0A8C1_0x00491810 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00491840 | 0.0% | Pending From 2bfb2dc67301fdf3767579a68719e070be964fda Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 06:42:53 +0200 Subject: [PATCH 209/241] reimplement: SHC_3BB0A8C1_0x004ABE50 100.00% Reimplemented --- .../MenuModalRenderFunction_SkirmishConnectionOptions.cpp | 2 +- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/UI/MenuModals/SkirmishConnectionOptions/MenuModalRenderFunction_SkirmishConnectionOptions.cpp b/src/OpenSHC/UI/MenuModals/SkirmishConnectionOptions/MenuModalRenderFunction_SkirmishConnectionOptions.cpp index 9749e7db0..bd1fc7a9b 100644 --- a/src/OpenSHC/UI/MenuModals/SkirmishConnectionOptions/MenuModalRenderFunction_SkirmishConnectionOptions.cpp +++ b/src/OpenSHC/UI/MenuModals/SkirmishConnectionOptions/MenuModalRenderFunction_SkirmishConnectionOptions.cpp @@ -12,7 +12,7 @@ namespace UI { void MenuModalRenderFunction_SkirmishConnectionOptions(int x, int y, int width, int height) { MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, - DAT_PencilRenderCore::ptr)(0x4f, 0x5d, x, y, width); + DAT_PencilRenderCore::ptr)(0x4f, 0x5d, x, y, width, height); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 01dcedd2a..7cd0306f0 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -25627,7 +25627,7 @@ SHC_3BB0A8C1_0x004ABD10 | 0.0% | Pending SHC_3BB0A8C1_0x004ABD20 | 0.0% | Pending -SHC_3BB0A8C1_0x004ABE50 | 54.5% | Callee header lacks height arg +SHC_3BB0A8C1_0x004ABE50 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004ABE80 | 54.5% | Callee header lacks height arg From 58eef0e0b87852d5dd2786dd85d7673eb8d5503b Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 06:42:54 +0200 Subject: [PATCH 210/241] reimplement: SHC_3BB0A8C1_0x004ABE80 100.00% Reimplemented --- .../MenuModalRenderFunction_SkirmishPlayOptions.cpp | 2 +- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/UI/MenuModals/SkirmishPlayOptions/MenuModalRenderFunction_SkirmishPlayOptions.cpp b/src/OpenSHC/UI/MenuModals/SkirmishPlayOptions/MenuModalRenderFunction_SkirmishPlayOptions.cpp index 836dec97f..4829b68b7 100644 --- a/src/OpenSHC/UI/MenuModals/SkirmishPlayOptions/MenuModalRenderFunction_SkirmishPlayOptions.cpp +++ b/src/OpenSHC/UI/MenuModals/SkirmishPlayOptions/MenuModalRenderFunction_SkirmishPlayOptions.cpp @@ -12,7 +12,7 @@ namespace UI { void MenuModalRenderFunction_SkirmishPlayOptions(int x, int y, int width, int height) { MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, - DAT_PencilRenderCore::ptr)(0x4f, 0x67, x, y, width); + DAT_PencilRenderCore::ptr)(0x4f, 0x67, x, y, width, height); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 7cd0306f0..42aa3f678 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -25629,7 +25629,7 @@ SHC_3BB0A8C1_0x004ABD20 | 0.0% | Pending SHC_3BB0A8C1_0x004ABE50 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004ABE80 | 54.5% | Callee header lacks height arg +SHC_3BB0A8C1_0x004ABE80 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004ABEB0 | 0.0% | Pending From 79948083f589156eaca28963180da8bc2f1518d4 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 06:42:54 +0200 Subject: [PATCH 211/241] reimplement: SHC_3BB0A8C1_0x00492660 100.00% Reimplemented --- .../SoundOptions/MenuModalRenderFunction_SoundOptions.cpp | 2 +- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/UI/MenuModals/SoundOptions/MenuModalRenderFunction_SoundOptions.cpp b/src/OpenSHC/UI/MenuModals/SoundOptions/MenuModalRenderFunction_SoundOptions.cpp index c0b7caa61..9c86cf509 100644 --- a/src/OpenSHC/UI/MenuModals/SoundOptions/MenuModalRenderFunction_SoundOptions.cpp +++ b/src/OpenSHC/UI/MenuModals/SoundOptions/MenuModalRenderFunction_SoundOptions.cpp @@ -12,7 +12,7 @@ namespace UI { void MenuModalRenderFunction_SoundOptions(int x, int y, int width, int height) { MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, - DAT_PencilRenderCore::ptr)(0x4a, 5, x, y, width); + DAT_PencilRenderCore::ptr)(0x4a, 5, x, y, width, height); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 42aa3f678..f65b4460d 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -23485,7 +23485,7 @@ SHC_3BB0A8C1_0x00492654 | 0.0% | Pending SHC_3BB0A8C1_0x00492658 | 0.0% | Pending -SHC_3BB0A8C1_0x00492660 | 54.5% | Callee header lacks height arg +SHC_3BB0A8C1_0x00492660 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00492690 | 0.0% | Pending From 9d34ab317a1517c4953e124b885dcfb2d2437aa0 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 06:42:55 +0200 Subject: [PATCH 212/241] reimplement: SHC_3BB0A8C1_0x004AB4E0 100.00% Reimplemented --- .../StartGoods/MenuModalRenderFunction_StartGoods.cpp | 2 +- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/UI/MenuModals/StartGoods/MenuModalRenderFunction_StartGoods.cpp b/src/OpenSHC/UI/MenuModals/StartGoods/MenuModalRenderFunction_StartGoods.cpp index 3c2e9fe50..b9fe397dc 100644 --- a/src/OpenSHC/UI/MenuModals/StartGoods/MenuModalRenderFunction_StartGoods.cpp +++ b/src/OpenSHC/UI/MenuModals/StartGoods/MenuModalRenderFunction_StartGoods.cpp @@ -12,7 +12,7 @@ namespace UI { void MenuModalRenderFunction_StartGoods(int x, int y, int width, int height) { MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, - DAT_PencilRenderCore::ptr)(199, 0x29, x, y, width); + DAT_PencilRenderCore::ptr)(199, 0x29, x, y, width, height); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index f65b4460d..e77dd7efc 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -25545,7 +25545,7 @@ SHC_3BB0A8C1_0x004AB460 | 0.0% | Pending SHC_3BB0A8C1_0x004AB4B0 | 54.5% | Callee header lacks height arg -SHC_3BB0A8C1_0x004AB4E0 | 54.5% | Callee header lacks height arg +SHC_3BB0A8C1_0x004AB4E0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004AB510 | 54.5% | Callee header lacks height arg From 7e2818352bc838af40eecea74133a6225d965a35 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 06:42:55 +0200 Subject: [PATCH 213/241] reimplement: SHC_3BB0A8C1_0x004AB4B0 100.00% Reimplemented --- .../TraderSettings/MenuModalRenderFunction_TraderSettings.cpp | 2 +- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/UI/MenuModals/TraderSettings/MenuModalRenderFunction_TraderSettings.cpp b/src/OpenSHC/UI/MenuModals/TraderSettings/MenuModalRenderFunction_TraderSettings.cpp index fb9460362..c881d36bf 100644 --- a/src/OpenSHC/UI/MenuModals/TraderSettings/MenuModalRenderFunction_TraderSettings.cpp +++ b/src/OpenSHC/UI/MenuModals/TraderSettings/MenuModalRenderFunction_TraderSettings.cpp @@ -12,7 +12,7 @@ namespace UI { void MenuModalRenderFunction_TraderSettings(int x, int y, int width, int height) { MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, - DAT_PencilRenderCore::ptr)(199, 0x26, x, y, width); + DAT_PencilRenderCore::ptr)(199, 0x26, x, y, width, height); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index e77dd7efc..808a722c0 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -25543,7 +25543,7 @@ SHC_3BB0A8C1_0x004AB440 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004AB460 | 0.0% | Pending -SHC_3BB0A8C1_0x004AB4B0 | 54.5% | Callee header lacks height arg +SHC_3BB0A8C1_0x004AB4B0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004AB4E0 | 100.0% | Reimplemented From c285db98862b9e48e6ceacdc1b9ed83731a8b9a8 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 06:42:55 +0200 Subject: [PATCH 214/241] reimplement: SHC_3BB0A8C1_0x004AC250 100.00% Reimplemented --- .../TriggerEvent/MenuModalRenderFunction_TriggerEvent.cpp | 2 +- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/UI/MenuModals/TriggerEvent/MenuModalRenderFunction_TriggerEvent.cpp b/src/OpenSHC/UI/MenuModals/TriggerEvent/MenuModalRenderFunction_TriggerEvent.cpp index b5c8aa984..f41936dad 100644 --- a/src/OpenSHC/UI/MenuModals/TriggerEvent/MenuModalRenderFunction_TriggerEvent.cpp +++ b/src/OpenSHC/UI/MenuModals/TriggerEvent/MenuModalRenderFunction_TriggerEvent.cpp @@ -12,7 +12,7 @@ namespace UI { void MenuModalRenderFunction_TriggerEvent(int x, int y, int width, int height) { MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, - DAT_PencilRenderCore::ptr)(199, 0x17, x, y, width); + DAT_PencilRenderCore::ptr)(199, 0x17, x, y, width, height); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 808a722c0..b09b16442 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -25779,7 +25779,7 @@ SHC_3BB0A8C1_0x004AC24E | 0.0% | Pending SHC_3BB0A8C1_0x004AC24F | 0.0% | Pending -SHC_3BB0A8C1_0x004AC250 | 54.5% | Callee header lacks height arg +SHC_3BB0A8C1_0x004AC250 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004AC280 | 0.0% | Pending From 8979158eb2bbbc7d1a94988cacfad30ecf6d774b Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 06:42:56 +0200 Subject: [PATCH 215/241] reimplement: SHC_3BB0A8C1_0x004AB510 100.00% Reimplemented --- .../MenuModalRenderFunction_UnusedSiegeAttackingForceUnk.cpp | 2 +- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/UI/MenuModals/UnusedSiegeAttackingForceUnk/MenuModalRenderFunction_UnusedSiegeAttackingForceUnk.cpp b/src/OpenSHC/UI/MenuModals/UnusedSiegeAttackingForceUnk/MenuModalRenderFunction_UnusedSiegeAttackingForceUnk.cpp index 80facb30c..5d2f141cb 100644 --- a/src/OpenSHC/UI/MenuModals/UnusedSiegeAttackingForceUnk/MenuModalRenderFunction_UnusedSiegeAttackingForceUnk.cpp +++ b/src/OpenSHC/UI/MenuModals/UnusedSiegeAttackingForceUnk/MenuModalRenderFunction_UnusedSiegeAttackingForceUnk.cpp @@ -12,7 +12,7 @@ namespace UI { void MenuModalRenderFunction_UnusedSiegeAttackingForceUnk(int x, int y, int width, int height) { MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawHeaderTextBanner, - DAT_PencilRenderCore::ptr)(199, 0xa4, x, y, width); + DAT_PencilRenderCore::ptr)(199, 0xa4, x, y, width, height); } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index b09b16442..23d53e5f5 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -25547,7 +25547,7 @@ SHC_3BB0A8C1_0x004AB4B0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004AB4E0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004AB510 | 54.5% | Callee header lacks height arg +SHC_3BB0A8C1_0x004AB510 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004AB540 | 100.0% | Reimplemented From 6b47e6d58933c79bc8b6fbb924d32f6e9a592512 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 06:42:56 +0200 Subject: [PATCH 216/241] reimplement: SHC_3BB0A8C1_0x004B5300 100.00% Reimplemented --- src/OpenSHC/UI/MinimapViewState/triggerMinimapRedraw.cpp | 2 +- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/UI/MinimapViewState/triggerMinimapRedraw.cpp b/src/OpenSHC/UI/MinimapViewState/triggerMinimapRedraw.cpp index 9aa825b12..f884516f1 100644 --- a/src/OpenSHC/UI/MinimapViewState/triggerMinimapRedraw.cpp +++ b/src/OpenSHC/UI/MinimapViewState/triggerMinimapRedraw.cpp @@ -4,7 +4,7 @@ namespace OpenSHC { namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x004B5300 - void MinimapViewState::triggerMinimapRedraw() + void MinimapViewState::triggerMinimapRedraw(int unknown) { if (this->field14_0x38 == 0) { this->field13_0x34 = 0; diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 23d53e5f5..46c5fbe8e 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -26881,7 +26881,7 @@ SHC_3BB0A8C1_0x004B51A0 | 0.0% | Pending SHC_3BB0A8C1_0x004B5280 | 0.0% | Pending -SHC_3BB0A8C1_0x004B5300 | 0.0% | Pending +SHC_3BB0A8C1_0x004B5300 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004B5330 | 0.0% | Pending From 9eee91f3040ee61dfb3f3b077e8607b38b7960be Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 08:19:11 +0200 Subject: [PATCH 217/241] compiler flags --- cmake/compiler-flags-gl.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cmake/compiler-flags-gl.txt b/cmake/compiler-flags-gl.txt index 848d70de6..5d54ae569 100644 --- a/cmake/compiler-flags-gl.txt +++ b/cmake/compiler-flags-gl.txt @@ -7,3 +7,5 @@ src/OpenSHC/IO/ResourceManager/swapMapDataWithNextMap.cpp src/OpenSHC/UI/Rendering/WindowAndDirectDraw/takeScreenshot.cpp src/OpenSHC/IO/ResourceManager/readFirstPartOfCurrentResourceIntoMemory.cpp src/OpenSHC/IO/ResourceManager/readNextPartOfCurrentResourceIntoMemory.cpp +src/OpenSHC/Map/TileMapState/updateMoatCountdownTimers.cpp +src/OpenSHC/Map/TileMapState/recountTotalOwnedMoats.cpp \ No newline at end of file From 6afc5de81e32e2284d6e56c9a299061a29d14680 Mon Sep 17 00:00:00 2001 From: Gynt Date: Fri, 25 Sep 2026 08:20:35 +0200 Subject: [PATCH 218/241] compiler flags --- cmake/compiler-flags-gl.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cmake/compiler-flags-gl.txt b/cmake/compiler-flags-gl.txt index 5d54ae569..96822b9d4 100644 --- a/cmake/compiler-flags-gl.txt +++ b/cmake/compiler-flags-gl.txt @@ -8,4 +8,6 @@ src/OpenSHC/UI/Rendering/WindowAndDirectDraw/takeScreenshot.cpp src/OpenSHC/IO/ResourceManager/readFirstPartOfCurrentResourceIntoMemory.cpp src/OpenSHC/IO/ResourceManager/readNextPartOfCurrentResourceIntoMemory.cpp src/OpenSHC/Map/TileMapState/updateMoatCountdownTimers.cpp -src/OpenSHC/Map/TileMapState/recountTotalOwnedMoats.cpp \ No newline at end of file +src/OpenSHC/Map/TileMapState/recountTotalOwnedMoats.cpp +src/OpenSHC/Game/GameStateStructures/getSalesPrice.cpp +src/OpenSHC/Map/TileMapState/updateBuildingPlacementRotationPreview.cpp From 497f63e7ef279b09de872727cff9a753e237d72a Mon Sep 17 00:00:00 2001 From: sourcehold Date: Mon, 28 Sep 2026 21:41:39 +0200 Subject: [PATCH 219/241] clang-formatting --- src/OpenSHC/Map/Units/TribesState/tribeCorrespondsWithUID.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/OpenSHC/Map/Units/TribesState/tribeCorrespondsWithUID.cpp b/src/OpenSHC/Map/Units/TribesState/tribeCorrespondsWithUID.cpp index 945cd23ec..d0d494051 100644 --- a/src/OpenSHC/Map/Units/TribesState/tribeCorrespondsWithUID.cpp +++ b/src/OpenSHC/Map/Units/TribesState/tribeCorrespondsWithUID.cpp @@ -1,4 +1,5 @@ #include "../TribesState.func.hpp" + #include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" namespace OpenSHC { From 200225206aaefbb1c3ad47b530258bcad3fdb188 Mon Sep 17 00:00:00 2001 From: sourcehold Date: Mon, 28 Sep 2026 22:02:35 +0200 Subject: [PATCH 220/241] remove untracked cpp files from status file --- status/addresses-SHC-3BB0A8C1.txt | 272 +++++++++++++++--------------- 1 file changed, 136 insertions(+), 136 deletions(-) diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 46c5fbe8e..61017b4b7 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -11143,7 +11143,7 @@ SHC_3BB0A8C1_0x00434270 | 0.0% | Pending SHC_3BB0A8C1_0x00434300 | 0.0% | Pending -SHC_3BB0A8C1_0x00434340 | 0.0% | Pending +SHC_3BB0A8C1_0x00434340 | 0.0% | Reimplemented SHC_3BB0A8C1_0x00434350 | 0.0% | Pending @@ -16901,17 +16901,17 @@ SHC_3BB0A8C1_0x0044C7E0 | 0.0% | Pending SHC_3BB0A8C1_0x0044C850 | 0.0% | Pending -SHC_3BB0A8C1_0x0044C8F0 | 0.0% | Pending +SHC_3BB0A8C1_0x0044C8F0 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x0044C940 | 0.0% | Pending +SHC_3BB0A8C1_0x0044C940 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x0044C9C0 | 0.0% | Pending +SHC_3BB0A8C1_0x0044C9C0 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x0044CAE0 | 0.0% | Pending +SHC_3BB0A8C1_0x0044CAE0 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x0044CB60 | 0.0% | Pending +SHC_3BB0A8C1_0x0044CB60 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x0044CBE0 | 0.0% | Pending +SHC_3BB0A8C1_0x0044CBE0 | 0.0% | Reimplemented SHC_3BB0A8C1_0x0044CC30 | 0.0% | Pending @@ -16927,7 +16927,7 @@ SHC_3BB0A8C1_0x0044CD10 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0044CD30 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0044CD40 | 0.0% | Pending +SHC_3BB0A8C1_0x0044CD40 | 0.0% | Reimplemented SHC_3BB0A8C1_0x0044CDC0 | 0.0% | Pending @@ -17011,7 +17011,7 @@ SHC_3BB0A8C1_0x00455250 | 0.0% | Pending SHC_3BB0A8C1_0x00455270 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00455290 | 0.0% | Pending +SHC_3BB0A8C1_0x00455290 | 0.0% | Reimplemented SHC_3BB0A8C1_0x004552E0 | 0.0% | Pending @@ -17027,7 +17027,7 @@ SHC_3BB0A8C1_0x004557B0 | 0.0% | Pending SHC_3BB0A8C1_0x004558E0 | 0.0% | Pending -SHC_3BB0A8C1_0x00455930 | 0.0% | Pending +SHC_3BB0A8C1_0x00455930 | 0.0% | Reimplemented SHC_3BB0A8C1_0x004559B0 | 0.0% | Pending @@ -17695,7 +17695,7 @@ SHC_3BB0A8C1_0x004585F0 | 0.0% | Pending SHC_3BB0A8C1_0x004586D0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004586F0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004586F0 | 0.0% | Reimplemented SHC_3BB0A8C1_0x00458700 | 100.0% | Reimplemented @@ -18017,7 +18017,7 @@ SHC_3BB0A8C1_0x0045ACC0 | 0.0% | Pending SHC_3BB0A8C1_0x0045AD10 | 0.0% | Pending -SHC_3BB0A8C1_0x0045AE00 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0045AE00 | 0.0% | Reimplemented SHC_3BB0A8C1_0x0045AE10 | 0.0% | Pending @@ -19149,7 +19149,7 @@ SHC_3BB0A8C1_0x00462FDE | 0.0% | Pending SHC_3BB0A8C1_0x00462FDF | 0.0% | Pending -SHC_3BB0A8C1_0x00462FE0 | 0.0% | Pending +SHC_3BB0A8C1_0x00462FE0 | 0.0% | Reimplemented SHC_3BB0A8C1_0x00462FF0 | 0.0% | Pending @@ -20129,7 +20129,7 @@ SHC_3BB0A8C1_0x004697E0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00469800 | 0.0% | Pending -SHC_3BB0A8C1_0x00469860 | 0.0% | Pending +SHC_3BB0A8C1_0x00469860 | 0.0% | Reimplemented SHC_3BB0A8C1_0x00469870 | 100.0% | Reimplemented @@ -20165,11 +20165,11 @@ SHC_3BB0A8C1_0x00469E10 | 0.0% | Pending SHC_3BB0A8C1_0x00469E70 | 0.0% | Pending -SHC_3BB0A8C1_0x00469F10 | 0.0% | Pending +SHC_3BB0A8C1_0x00469F10 | 0.0% | Reimplemented SHC_3BB0A8C1_0x00469F20 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00469F40 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00469F40 | 0.0% | Reimplemented SHC_3BB0A8C1_0x00469F50 | 0.0% | Pending @@ -20967,7 +20967,7 @@ SHC_3BB0A8C1_0x0046CEAC | 0.0% | Pending SHC_3BB0A8C1_0x0046CEB0 | 0.0% | Pending -SHC_3BB0A8C1_0x0046CEC0 | 0.0% | Pending +SHC_3BB0A8C1_0x0046CEC0 | 0.0% | Reimplemented SHC_3BB0A8C1_0x0046CED0 | 100.0% | Reimplemented @@ -30085,7 +30085,7 @@ SHC_3BB0A8C1_0x004BC5B0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004BC5F0 | 0.0% | Pending -SHC_3BB0A8C1_0x004BC620 | 0.0% | Pending +SHC_3BB0A8C1_0x004BC620 | 0.0% | Reimplemented SHC_3BB0A8C1_0x004BC630 | 0.0% | Pending @@ -35559,7 +35559,7 @@ SHC_3BB0A8C1_0x004D48F0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004D4940 | 0.0% | Pending -SHC_3BB0A8C1_0x004D49E0 | 0.0% | Pending +SHC_3BB0A8C1_0x004D49E0 | 0.0% | Reimplemented SHC_3BB0A8C1_0x004D5010 | 100.0% | Reimplemented @@ -36019,7 +36019,7 @@ SHC_3BB0A8C1_0x004D91D0 | 0.0% | Pending SHC_3BB0A8C1_0x004D9230 | 0.0% | Pending -SHC_3BB0A8C1_0x004D9270 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004D9270 | 0.0% | Reimplemented SHC_3BB0A8C1_0x004D9290 | 0.0% | Pending @@ -37871,27 +37871,27 @@ SHC_3BB0A8C1_0x004ECA90 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004ECAB0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004ECAD0 | 0.0% | Pending +SHC_3BB0A8C1_0x004ECAD0 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x004ECBC0 | 0.0% | Pending +SHC_3BB0A8C1_0x004ECBC0 | 0.0% | Reimplemented SHC_3BB0A8C1_0x004ECCA0 | 0.0% | Pending SHC_3BB0A8C1_0x004ECD90 | 0.0% | Pending -SHC_3BB0A8C1_0x004ECDB0 | 0.0% | Pending +SHC_3BB0A8C1_0x004ECDB0 | 0.0% | Reimplemented SHC_3BB0A8C1_0x004ECDE0 | 0.0% | Pending SHC_3BB0A8C1_0x004ECDF0 | 0.0% | Pending -SHC_3BB0A8C1_0x004ECE60 | 0.0% | Pending +SHC_3BB0A8C1_0x004ECE60 | 0.0% | Reimplemented SHC_3BB0A8C1_0x004ECEF0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004ECF70 | 0.0% | Pending +SHC_3BB0A8C1_0x004ECF70 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x004ECFE0 | 0.0% | Pending +SHC_3BB0A8C1_0x004ECFE0 | 0.0% | Reimplemented SHC_3BB0A8C1_0x004ED070 | 0.0% | Pending @@ -37923,47 +37923,47 @@ SHC_3BB0A8C1_0x004ED0A4 | 0.0% | Pending SHC_3BB0A8C1_0x004ED0A8 | 0.0% | Pending -SHC_3BB0A8C1_0x004ED0B0 | 0.0% | Pending +SHC_3BB0A8C1_0x004ED0B0 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x004ED240 | 0.0% | Pending +SHC_3BB0A8C1_0x004ED240 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x004ED300 | 0.0% | Pending +SHC_3BB0A8C1_0x004ED300 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x004ED3B0 | 0.0% | Pending +SHC_3BB0A8C1_0x004ED3B0 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x004ED410 | 0.0% | Pending +SHC_3BB0A8C1_0x004ED410 | 0.0% | Reimplemented SHC_3BB0A8C1_0x004EDC90 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004EDCB0 | 0.0% | Pending +SHC_3BB0A8C1_0x004EDCB0 | 0.0% | Reimplemented SHC_3BB0A8C1_0x004EDD00 | 0.0% | Pending -SHC_3BB0A8C1_0x004EDDF0 | 0.0% | Pending +SHC_3BB0A8C1_0x004EDDF0 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x004EE140 | 0.0% | Pending +SHC_3BB0A8C1_0x004EE140 | 0.0% | Reimplemented SHC_3BB0A8C1_0x004EE230 | 0.0% | Pending -SHC_3BB0A8C1_0x004EE430 | 0.0% | Pending +SHC_3BB0A8C1_0x004EE430 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x004EE830 | 0.0% | Pending +SHC_3BB0A8C1_0x004EE830 | 0.0% | Reimplemented SHC_3BB0A8C1_0x004EE920 | 0.0% | Pending -SHC_3BB0A8C1_0x004EEBD0 | 0.0% | Pending +SHC_3BB0A8C1_0x004EEBD0 | 0.0% | Reimplemented SHC_3BB0A8C1_0x004EECC0 | 0.0% | Pending -SHC_3BB0A8C1_0x004EEE10 | 0.0% | Pending +SHC_3BB0A8C1_0x004EEE10 | 0.0% | Reimplemented SHC_3BB0A8C1_0x004EEEC0 | 0.0% | Pending SHC_3BB0A8C1_0x004EEF20 | 0.0% | Pending -SHC_3BB0A8C1_0x004EF090 | 0.0% | Pending +SHC_3BB0A8C1_0x004EF090 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x004EF0D0 | 0.0% | Pending +SHC_3BB0A8C1_0x004EF0D0 | 0.0% | Reimplemented SHC_3BB0A8C1_0x004EF130 | 0.0% | Pending @@ -37971,43 +37971,43 @@ SHC_3BB0A8C1_0x004EF150 | 0.0% | Pending SHC_3BB0A8C1_0x004EF450 | 0.0% | Pending -SHC_3BB0A8C1_0x004EF8C0 | 0.0% | Pending +SHC_3BB0A8C1_0x004EF8C0 | 0.0% | Reimplemented SHC_3BB0A8C1_0x004EF900 | 0.0% | Pending SHC_3BB0A8C1_0x004EF920 | 0.0% | Pending -SHC_3BB0A8C1_0x004EFA60 | 0.0% | Pending +SHC_3BB0A8C1_0x004EFA60 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x004EFAB0 | 0.0% | Pending +SHC_3BB0A8C1_0x004EFAB0 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x004EFB90 | 0.0% | Pending +SHC_3BB0A8C1_0x004EFB90 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x004EFC30 | 0.0% | Pending +SHC_3BB0A8C1_0x004EFC30 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x004EFD90 | 0.0% | Pending +SHC_3BB0A8C1_0x004EFD90 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x004EFE30 | 0.0% | Pending +SHC_3BB0A8C1_0x004EFE30 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x004EFED0 | 0.0% | Pending +SHC_3BB0A8C1_0x004EFED0 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x004F0060 | 0.0% | Pending +SHC_3BB0A8C1_0x004F0060 | 0.0% | Reimplemented SHC_3BB0A8C1_0x004F0690 | 0.0% | Pending -SHC_3BB0A8C1_0x004F0E80 | 0.0% | Pending +SHC_3BB0A8C1_0x004F0E80 | 0.0% | Reimplemented SHC_3BB0A8C1_0x004F1190 | 0.0% | Pending -SHC_3BB0A8C1_0x004F13E0 | 0.0% | Pending +SHC_3BB0A8C1_0x004F13E0 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x004F13F0 | 0.0% | Pending +SHC_3BB0A8C1_0x004F13F0 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x004F14F0 | 0.0% | Pending +SHC_3BB0A8C1_0x004F14F0 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x004F15C0 | 0.0% | Pending +SHC_3BB0A8C1_0x004F15C0 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x004F1860 | 0.0% | Pending +SHC_3BB0A8C1_0x004F1860 | 0.0% | Reimplemented SHC_3BB0A8C1_0x004F1A60 | 0.0% | Pending @@ -38471,7 +38471,7 @@ SHC_3BB0A8C1_0x004F2970 | 0.0% | Pending SHC_3BB0A8C1_0x004F29C0 | 0.0% | Pending -SHC_3BB0A8C1_0x004F2A10 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004F2A10 | 0.0% | Reimplemented SHC_3BB0A8C1_0x004F2A20 | 100.0% | Reimplemented @@ -38591,7 +38591,7 @@ SHC_3BB0A8C1_0x004F38A0 | 0.0% | Pending SHC_3BB0A8C1_0x004F3900 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004F3930 | 0.0% | Pending +SHC_3BB0A8C1_0x004F3930 | 0.0% | Reimplemented SHC_3BB0A8C1_0x004F3960 | 0.0% | Pending @@ -41431,9 +41431,9 @@ SHC_3BB0A8C1_0x00500250 | 0.0% | Pending SHC_3BB0A8C1_0x00500290 | 0.0% | Pending -SHC_3BB0A8C1_0x005002D0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x005002D0 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x00500310 | 0.0% | Pending +SHC_3BB0A8C1_0x00500310 | 0.0% | Reimplemented SHC_3BB0A8C1_0x00500370 | 0.0% | Pending @@ -50649,7 +50649,7 @@ SHC_3BB0A8C1_0x00532F80 | 0.0% | Pending SHC_3BB0A8C1_0x00533010 | 0.0% | Pending -SHC_3BB0A8C1_0x00533090 | 0.0% | Pending +SHC_3BB0A8C1_0x00533090 | 0.0% | Reimplemented SHC_3BB0A8C1_0x005330A0 | 0.0% | Pending @@ -51081,7 +51081,7 @@ SHC_3BB0A8C1_0x00535700 | 0.0% | Pending SHC_3BB0A8C1_0x00535730 | 0.0% | Pending -SHC_3BB0A8C1_0x005357E0 | 0.0% | Pending +SHC_3BB0A8C1_0x005357E0 | 0.0% | Reimplemented SHC_3BB0A8C1_0x00535810 | 0.0% | Pending @@ -51203,7 +51203,7 @@ SHC_3BB0A8C1_0x00536A51 | 0.0% | Pending SHC_3BB0A8C1_0x00536A60 | 0.0% | Pending -SHC_3BB0A8C1_0x00536C70 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00536C70 | 0.0% | Reimplemented SHC_3BB0A8C1_0x00536C90 | 0.0% | Pending @@ -51237,7 +51237,7 @@ SHC_3BB0A8C1_0x005371F0 | 0.0% | Pending SHC_3BB0A8C1_0x00537700 | 0.0% | Pending -SHC_3BB0A8C1_0x005377F0 | 0.0% | Pending +SHC_3BB0A8C1_0x005377F0 | 0.0% | Reimplemented SHC_3BB0A8C1_0x00537840 | 0.0% | Pending @@ -59659,11 +59659,11 @@ SHC_3BB0A8C1_0x0053BB70 | 0.0% | Pending SHC_3BB0A8C1_0x0053BB90 | 0.0% | Pending -SHC_3BB0A8C1_0x0053BC20 | 0.0% | Pending +SHC_3BB0A8C1_0x0053BC20 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x0053BE00 | 0.0% | Pending +SHC_3BB0A8C1_0x0053BE00 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x0053C300 | 0.0% | Pending +SHC_3BB0A8C1_0x0053C300 | 0.0% | Reimplemented SHC_3BB0A8C1_0x0053C400 | 0.0% | Pending @@ -60101,7 +60101,7 @@ SHC_3BB0A8C1_0x0053E900 | 0.0% | Pending SHC_3BB0A8C1_0x0053E9F0 | 0.0% | Pending -SHC_3BB0A8C1_0x0053EAA0 | 0.0% | Pending +SHC_3BB0A8C1_0x0053EAA0 | 0.0% | Reimplemented SHC_3BB0A8C1_0x0053F07C | 0.0% | Pending @@ -60241,7 +60241,7 @@ SHC_3BB0A8C1_0x0053F92F | 0.0% | Pending SHC_3BB0A8C1_0x0053F930 | 0.0% | Pending -SHC_3BB0A8C1_0x0053F940 | 0.0% | Pending +SHC_3BB0A8C1_0x0053F940 | 0.0% | Reimplemented SHC_3BB0A8C1_0x00540040 | 0.0% | Pending @@ -60327,17 +60327,17 @@ SHC_3BB0A8C1_0x005401C9 | 0.0% | Pending SHC_3BB0A8C1_0x005401CA | 0.0% | Pending -SHC_3BB0A8C1_0x005401D0 | 0.0% | Pending +SHC_3BB0A8C1_0x005401D0 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x00540440 | 0.0% | Pending +SHC_3BB0A8C1_0x00540440 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x00540EC0 | 0.0% | Pending +SHC_3BB0A8C1_0x00540EC0 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x005416B0 | 0.0% | Pending +SHC_3BB0A8C1_0x005416B0 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x00541A30 | 0.0% | Pending +SHC_3BB0A8C1_0x00541A30 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x00541DE0 | 0.0% | Pending +SHC_3BB0A8C1_0x00541DE0 | 0.0% | Reimplemented SHC_3BB0A8C1_0x00542528 | 0.0% | Pending @@ -60783,7 +60783,7 @@ SHC_3BB0A8C1_0x00542628 | 0.0% | Pending SHC_3BB0A8C1_0x00542629 | 0.0% | Pending -SHC_3BB0A8C1_0x00542630 | 0.0% | Pending +SHC_3BB0A8C1_0x00542630 | 0.0% | Reimplemented SHC_3BB0A8C1_0x00542C0C | 0.0% | Pending @@ -61225,21 +61225,21 @@ SHC_3BB0A8C1_0x00542D04 | 0.0% | Pending SHC_3BB0A8C1_0x00542D05 | 0.0% | Pending -SHC_3BB0A8C1_0x00542D10 | 0.0% | Pending +SHC_3BB0A8C1_0x00542D10 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x00543340 | 0.0% | Pending +SHC_3BB0A8C1_0x00543340 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x00543B80 | 0.0% | Pending +SHC_3BB0A8C1_0x00543B80 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x00543DC0 | 0.0% | Pending +SHC_3BB0A8C1_0x00543DC0 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x00544750 | 0.0% | Pending +SHC_3BB0A8C1_0x00544750 | 0.0% | Reimplemented SHC_3BB0A8C1_0x005451A0 | 0.0% | Pending SHC_3BB0A8C1_0x005455E0 | 0.0% | Pending -SHC_3BB0A8C1_0x005459B0 | 0.0% | Pending +SHC_3BB0A8C1_0x005459B0 | 0.0% | Reimplemented SHC_3BB0A8C1_0x00545B00 | 0.0% | Pending @@ -61247,7 +61247,7 @@ SHC_3BB0A8C1_0x00545D30 | 0.0% | Pending SHC_3BB0A8C1_0x00545F00 | 0.0% | Pending -SHC_3BB0A8C1_0x005464F0 | 0.0% | Pending +SHC_3BB0A8C1_0x005464F0 | 0.0% | Reimplemented SHC_3BB0A8C1_0x00546BA0 | 0.0% | Pending @@ -61265,7 +61265,7 @@ SHC_3BB0A8C1_0x00546BB8 | 0.0% | Pending SHC_3BB0A8C1_0x00546BBC | 0.0% | Pending -SHC_3BB0A8C1_0x00546BC0 | 0.0% | Pending +SHC_3BB0A8C1_0x00546BC0 | 0.0% | Reimplemented SHC_3BB0A8C1_0x00547790 | 0.0% | Pending @@ -61309,7 +61309,7 @@ SHC_3BB0A8C1_0x005477B5 | 0.0% | Pending SHC_3BB0A8C1_0x005477B6 | 0.0% | Pending -SHC_3BB0A8C1_0x005477C0 | 0.0% | Pending +SHC_3BB0A8C1_0x005477C0 | 0.0% | Reimplemented SHC_3BB0A8C1_0x00549050 | 0.0% | Pending @@ -61367,7 +61367,7 @@ SHC_3BB0A8C1_0x00549082 | 0.0% | Pending SHC_3BB0A8C1_0x00549083 | 0.0% | Pending -SHC_3BB0A8C1_0x00549090 | 0.0% | Pending +SHC_3BB0A8C1_0x00549090 | 0.0% | Reimplemented SHC_3BB0A8C1_0x00549620 | 0.0% | Pending @@ -61389,7 +61389,7 @@ SHC_3BB0A8C1_0x00549640 | 0.0% | Pending SHC_3BB0A8C1_0x00549644 | 0.0% | Pending -SHC_3BB0A8C1_0x00549650 | 0.0% | Pending +SHC_3BB0A8C1_0x00549650 | 0.0% | Reimplemented SHC_3BB0A8C1_0x00549B10 | 0.0% | Pending @@ -62509,43 +62509,43 @@ SHC_3BB0A8C1_0x0054C4F0 | 0.0% | Pending SHC_3BB0A8C1_0x0054C610 | 0.0% | Pending -SHC_3BB0A8C1_0x0054C710 | 0.0% | Pending +SHC_3BB0A8C1_0x0054C710 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x0054D8F0 | 0.0% | Pending +SHC_3BB0A8C1_0x0054D8F0 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x0054E6C0 | 0.0% | Pending +SHC_3BB0A8C1_0x0054E6C0 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x0054F860 | 0.0% | Pending +SHC_3BB0A8C1_0x0054F860 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x00550A50 | 0.0% | Pending +SHC_3BB0A8C1_0x00550A50 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x00550D70 | 0.0% | Pending +SHC_3BB0A8C1_0x00550D70 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x00551980 | 0.0% | Pending +SHC_3BB0A8C1_0x00551980 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x005521D0 | 0.0% | Pending +SHC_3BB0A8C1_0x005521D0 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x00552F80 | 0.0% | Pending +SHC_3BB0A8C1_0x00552F80 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x00553AE0 | 0.0% | Pending +SHC_3BB0A8C1_0x00553AE0 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x00554500 | 0.0% | Pending +SHC_3BB0A8C1_0x00554500 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x00554CC0 | 0.0% | Pending +SHC_3BB0A8C1_0x00554CC0 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x00555880 | 0.0% | Pending +SHC_3BB0A8C1_0x00555880 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x005565D0 | 0.0% | Pending +SHC_3BB0A8C1_0x005565D0 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x00557230 | 0.0% | Pending +SHC_3BB0A8C1_0x00557230 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x00557F70 | 0.0% | Pending +SHC_3BB0A8C1_0x00557F70 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x00558CB0 | 0.0% | Pending +SHC_3BB0A8C1_0x00558CB0 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x005598D0 | 0.0% | Pending +SHC_3BB0A8C1_0x005598D0 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x0055A800 | 0.0% | Pending +SHC_3BB0A8C1_0x0055A800 | 0.0% | Reimplemented SHC_3BB0A8C1_0x0055C6D0 | 0.0% | Pending @@ -62845,7 +62845,7 @@ SHC_3BB0A8C1_0x0055C7A8 | 0.0% | Pending SHC_3BB0A8C1_0x0055C7A9 | 0.0% | Pending -SHC_3BB0A8C1_0x0055C7B0 | 0.0% | Pending +SHC_3BB0A8C1_0x0055C7B0 | 0.0% | Reimplemented SHC_3BB0A8C1_0x0055D988 | 0.0% | Pending @@ -63133,7 +63133,7 @@ SHC_3BB0A8C1_0x0055DA4E | 0.0% | Pending SHC_3BB0A8C1_0x0055DA4F | 0.0% | Pending -SHC_3BB0A8C1_0x0055DA50 | 0.0% | Pending +SHC_3BB0A8C1_0x0055DA50 | 0.0% | Reimplemented SHC_3BB0A8C1_0x0055F030 | 0.0% | Pending @@ -63429,7 +63429,7 @@ SHC_3BB0A8C1_0x0055F100 | 0.0% | Pending SHC_3BB0A8C1_0x0055F101 | 0.0% | Pending -SHC_3BB0A8C1_0x0055F110 | 0.0% | Pending +SHC_3BB0A8C1_0x0055F110 | 0.0% | Reimplemented SHC_3BB0A8C1_0x00560638 | 0.0% | Pending @@ -63719,7 +63719,7 @@ SHC_3BB0A8C1_0x005606FC | 0.0% | Pending SHC_3BB0A8C1_0x005606FD | 0.0% | Pending -SHC_3BB0A8C1_0x00560700 | 0.0% | Pending +SHC_3BB0A8C1_0x00560700 | 0.0% | Reimplemented SHC_3BB0A8C1_0x00561B3C | 0.0% | Pending @@ -64013,7 +64013,7 @@ SHC_3BB0A8C1_0x00561C08 | 0.0% | Pending SHC_3BB0A8C1_0x00561C09 | 0.0% | Pending -SHC_3BB0A8C1_0x00561C10 | 0.0% | Pending +SHC_3BB0A8C1_0x00561C10 | 0.0% | Reimplemented SHC_3BB0A8C1_0x005629E4 | 0.0% | Pending @@ -64291,7 +64291,7 @@ SHC_3BB0A8C1_0x00562A99 | 0.0% | Pending SHC_3BB0A8C1_0x00562A9A | 0.0% | Pending -SHC_3BB0A8C1_0x00562AA0 | 0.0% | Pending +SHC_3BB0A8C1_0x00562AA0 | 0.0% | Reimplemented SHC_3BB0A8C1_0x00563854 | 0.0% | Pending @@ -64567,7 +64567,7 @@ SHC_3BB0A8C1_0x00563905 | 0.0% | Pending SHC_3BB0A8C1_0x00563906 | 0.0% | Pending -SHC_3BB0A8C1_0x00563910 | 0.0% | Pending +SHC_3BB0A8C1_0x00563910 | 0.0% | Reimplemented SHC_3BB0A8C1_0x0056419C | 0.0% | Pending @@ -64843,7 +64843,7 @@ SHC_3BB0A8C1_0x0056424D | 0.0% | Pending SHC_3BB0A8C1_0x0056424E | 0.0% | Pending -SHC_3BB0A8C1_0x00564250 | 0.0% | Pending +SHC_3BB0A8C1_0x00564250 | 0.0% | Reimplemented SHC_3BB0A8C1_0x00565F1C | 0.0% | Pending @@ -65151,13 +65151,13 @@ SHC_3BB0A8C1_0x00566004 | 0.0% | Pending SHC_3BB0A8C1_0x00566005 | 0.0% | Pending -SHC_3BB0A8C1_0x00566010 | 0.0% | Pending +SHC_3BB0A8C1_0x00566010 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x00566750 | 0.0% | Pending +SHC_3BB0A8C1_0x00566750 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x00567320 | 0.0% | Pending +SHC_3BB0A8C1_0x00567320 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x00567640 | 0.0% | Pending +SHC_3BB0A8C1_0x00567640 | 0.0% | Reimplemented SHC_3BB0A8C1_0x00568264 | 0.0% | Pending @@ -65437,33 +65437,33 @@ SHC_3BB0A8C1_0x0056831D | 0.0% | Pending SHC_3BB0A8C1_0x0056831E | 0.0% | Pending -SHC_3BB0A8C1_0x00568320 | 0.0% | Pending +SHC_3BB0A8C1_0x00568320 | 0.0% | Reimplemented SHC_3BB0A8C1_0x00568730 | 0.0% | Pending SHC_3BB0A8C1_0x00569300 | 0.0% | Pending -SHC_3BB0A8C1_0x00569410 | 0.0% | Pending +SHC_3BB0A8C1_0x00569410 | 0.0% | Reimplemented SHC_3BB0A8C1_0x0056A360 | 0.0% | Pending -SHC_3BB0A8C1_0x0056A3F0 | 0.0% | Pending +SHC_3BB0A8C1_0x0056A3F0 | 0.0% | Reimplemented SHC_3BB0A8C1_0x0056A8A0 | 0.0% | Pending SHC_3BB0A8C1_0x0056AF20 | 0.0% | Pending -SHC_3BB0A8C1_0x0056B0E0 | 0.0% | Pending +SHC_3BB0A8C1_0x0056B0E0 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x0056B970 | 0.0% | Pending +SHC_3BB0A8C1_0x0056B970 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x0056C560 | 0.0% | Pending +SHC_3BB0A8C1_0x0056C560 | 0.0% | Reimplemented SHC_3BB0A8C1_0x0056DAC0 | 0.0% | Pending -SHC_3BB0A8C1_0x0056E190 | 0.0% | Pending +SHC_3BB0A8C1_0x0056E190 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x0056ECD0 | 0.0% | Pending +SHC_3BB0A8C1_0x0056ECD0 | 0.0% | Reimplemented SHC_3BB0A8C1_0x0056F110 | 0.0% | Pending @@ -65471,9 +65471,9 @@ SHC_3BB0A8C1_0x0056F7E0 | 0.0% | Pending SHC_3BB0A8C1_0x0056F910 | 0.0% | Pending -SHC_3BB0A8C1_0x0056F9B0 | 0.0% | Pending +SHC_3BB0A8C1_0x0056F9B0 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x00570400 | 0.0% | Pending +SHC_3BB0A8C1_0x00570400 | 0.0% | Reimplemented SHC_3BB0A8C1_0x00571B34 | 0.0% | Pending @@ -65763,7 +65763,7 @@ SHC_3BB0A8C1_0x00571BFE | 0.0% | Pending SHC_3BB0A8C1_0x00571BFF | 0.0% | Pending -SHC_3BB0A8C1_0x00571C00 | 0.0% | Pending +SHC_3BB0A8C1_0x00571C00 | 0.0% | Reimplemented SHC_3BB0A8C1_0x00572DB0 | 0.0% | Pending @@ -66053,7 +66053,7 @@ SHC_3BB0A8C1_0x00572E74 | 0.0% | Pending SHC_3BB0A8C1_0x00572E75 | 0.0% | Pending -SHC_3BB0A8C1_0x00572E80 | 0.0% | Pending +SHC_3BB0A8C1_0x00572E80 | 0.0% | Reimplemented SHC_3BB0A8C1_0x00574408 | 0.0% | Pending @@ -66095,7 +66095,7 @@ SHC_3BB0A8C1_0x00574450 | 0.0% | Pending SHC_3BB0A8C1_0x00574454 | 0.0% | Pending -SHC_3BB0A8C1_0x005744D0 | 0.0% | Pending +SHC_3BB0A8C1_0x005744D0 | 0.0% | Reimplemented SHC_3BB0A8C1_0x0057574C | 0.0% | Pending @@ -66395,9 +66395,9 @@ SHC_3BB0A8C1_0x00575818 | 0.0% | Pending SHC_3BB0A8C1_0x00575819 | 0.0% | Pending -SHC_3BB0A8C1_0x00575820 | 0.0% | Pending +SHC_3BB0A8C1_0x00575820 | 0.0% | Reimplemented -SHC_3BB0A8C1_0x00575C40 | 0.0% | Pending +SHC_3BB0A8C1_0x00575C40 | 0.0% | Reimplemented SHC_3BB0A8C1_0x00576930 | 0.0% | Pending @@ -66675,7 +66675,7 @@ SHC_3BB0A8C1_0x005769E5 | 0.0% | Pending SHC_3BB0A8C1_0x005769E6 | 0.0% | Pending -SHC_3BB0A8C1_0x005769F0 | 0.0% | Pending +SHC_3BB0A8C1_0x005769F0 | 0.0% | Reimplemented SHC_3BB0A8C1_0x00577BF8 | 0.0% | Pending @@ -66963,7 +66963,7 @@ SHC_3BB0A8C1_0x00577CBE | 0.0% | Pending SHC_3BB0A8C1_0x00577CBF | 0.0% | Pending -SHC_3BB0A8C1_0x00577CC0 | 0.0% | Pending +SHC_3BB0A8C1_0x00577CC0 | 0.0% | Reimplemented SHC_3BB0A8C1_0x005781A0 | 0.0% | Pending @@ -67265,7 +67265,7 @@ SHC_3BB0A8C1_0x0057AB42 | 0.0% | Pending SHC_3BB0A8C1_0x0057AB43 | 0.0% | Pending -SHC_3BB0A8C1_0x0057AB50 | 0.0% | Pending +SHC_3BB0A8C1_0x0057AB50 | 0.0% | Reimplemented SHC_3BB0A8C1_0x0057B90C | 0.0% | Pending @@ -67953,7 +67953,7 @@ SHC_3BB0A8C1_0x005816B9 | 0.0% | Pending SHC_3BB0A8C1_0x005816C3 | 0.0% | Pending -SHC_3BB0A8C1_0x005816EE | 0.0% | Pending +SHC_3BB0A8C1_0x005816EE | 0.0% | Reimplemented SHC_3BB0A8C1_0x005816FB | 0.0% | Pending From dc4c59857c7cd86c22b74af96c84b407a8d73a4a Mon Sep 17 00:00:00 2001 From: sourcehold Date: Mon, 28 Sep 2026 22:04:29 +0200 Subject: [PATCH 221/241] remove untracked cpp files from status file --- status/addresses-SHC-3BB0A8C1.txt | 272 +++++++++++++++--------------- 1 file changed, 136 insertions(+), 136 deletions(-) diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 61017b4b7..a6cdca7e5 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -11143,7 +11143,7 @@ SHC_3BB0A8C1_0x00434270 | 0.0% | Pending SHC_3BB0A8C1_0x00434300 | 0.0% | Pending -SHC_3BB0A8C1_0x00434340 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00434340 | 0.0% | Pending SHC_3BB0A8C1_0x00434350 | 0.0% | Pending @@ -16901,17 +16901,17 @@ SHC_3BB0A8C1_0x0044C7E0 | 0.0% | Pending SHC_3BB0A8C1_0x0044C850 | 0.0% | Pending -SHC_3BB0A8C1_0x0044C8F0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x0044C8F0 | 0.0% | Pending -SHC_3BB0A8C1_0x0044C940 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x0044C940 | 0.0% | Pending -SHC_3BB0A8C1_0x0044C9C0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x0044C9C0 | 0.0% | Pending -SHC_3BB0A8C1_0x0044CAE0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x0044CAE0 | 0.0% | Pending -SHC_3BB0A8C1_0x0044CB60 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x0044CB60 | 0.0% | Pending -SHC_3BB0A8C1_0x0044CBE0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x0044CBE0 | 0.0% | Pending SHC_3BB0A8C1_0x0044CC30 | 0.0% | Pending @@ -16927,7 +16927,7 @@ SHC_3BB0A8C1_0x0044CD10 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0044CD30 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0044CD40 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x0044CD40 | 0.0% | Pending SHC_3BB0A8C1_0x0044CDC0 | 0.0% | Pending @@ -17011,7 +17011,7 @@ SHC_3BB0A8C1_0x00455250 | 0.0% | Pending SHC_3BB0A8C1_0x00455270 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00455290 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00455290 | 0.0% | Pending SHC_3BB0A8C1_0x004552E0 | 0.0% | Pending @@ -17027,7 +17027,7 @@ SHC_3BB0A8C1_0x004557B0 | 0.0% | Pending SHC_3BB0A8C1_0x004558E0 | 0.0% | Pending -SHC_3BB0A8C1_0x00455930 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00455930 | 0.0% | Pending SHC_3BB0A8C1_0x004559B0 | 0.0% | Pending @@ -17695,7 +17695,7 @@ SHC_3BB0A8C1_0x004585F0 | 0.0% | Pending SHC_3BB0A8C1_0x004586D0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004586F0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004586F0 | 0.0% | Pending SHC_3BB0A8C1_0x00458700 | 100.0% | Reimplemented @@ -18017,7 +18017,7 @@ SHC_3BB0A8C1_0x0045ACC0 | 0.0% | Pending SHC_3BB0A8C1_0x0045AD10 | 0.0% | Pending -SHC_3BB0A8C1_0x0045AE00 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x0045AE00 | 0.0% | Pending SHC_3BB0A8C1_0x0045AE10 | 0.0% | Pending @@ -19149,7 +19149,7 @@ SHC_3BB0A8C1_0x00462FDE | 0.0% | Pending SHC_3BB0A8C1_0x00462FDF | 0.0% | Pending -SHC_3BB0A8C1_0x00462FE0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00462FE0 | 0.0% | Pending SHC_3BB0A8C1_0x00462FF0 | 0.0% | Pending @@ -20129,7 +20129,7 @@ SHC_3BB0A8C1_0x004697E0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00469800 | 0.0% | Pending -SHC_3BB0A8C1_0x00469860 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00469860 | 0.0% | Pending SHC_3BB0A8C1_0x00469870 | 100.0% | Reimplemented @@ -20165,11 +20165,11 @@ SHC_3BB0A8C1_0x00469E10 | 0.0% | Pending SHC_3BB0A8C1_0x00469E70 | 0.0% | Pending -SHC_3BB0A8C1_0x00469F10 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00469F10 | 0.0% | Pending SHC_3BB0A8C1_0x00469F20 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00469F40 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00469F40 | 0.0% | Pending SHC_3BB0A8C1_0x00469F50 | 0.0% | Pending @@ -20967,7 +20967,7 @@ SHC_3BB0A8C1_0x0046CEAC | 0.0% | Pending SHC_3BB0A8C1_0x0046CEB0 | 0.0% | Pending -SHC_3BB0A8C1_0x0046CEC0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x0046CEC0 | 0.0% | Pending SHC_3BB0A8C1_0x0046CED0 | 100.0% | Reimplemented @@ -30085,7 +30085,7 @@ SHC_3BB0A8C1_0x004BC5B0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004BC5F0 | 0.0% | Pending -SHC_3BB0A8C1_0x004BC620 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004BC620 | 0.0% | Pending SHC_3BB0A8C1_0x004BC630 | 0.0% | Pending @@ -35559,7 +35559,7 @@ SHC_3BB0A8C1_0x004D48F0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004D4940 | 0.0% | Pending -SHC_3BB0A8C1_0x004D49E0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004D49E0 | 0.0% | Pending SHC_3BB0A8C1_0x004D5010 | 100.0% | Reimplemented @@ -36019,7 +36019,7 @@ SHC_3BB0A8C1_0x004D91D0 | 0.0% | Pending SHC_3BB0A8C1_0x004D9230 | 0.0% | Pending -SHC_3BB0A8C1_0x004D9270 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004D9270 | 0.0% | Pending SHC_3BB0A8C1_0x004D9290 | 0.0% | Pending @@ -37871,27 +37871,27 @@ SHC_3BB0A8C1_0x004ECA90 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004ECAB0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004ECAD0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004ECAD0 | 0.0% | Pending -SHC_3BB0A8C1_0x004ECBC0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004ECBC0 | 0.0% | Pending SHC_3BB0A8C1_0x004ECCA0 | 0.0% | Pending SHC_3BB0A8C1_0x004ECD90 | 0.0% | Pending -SHC_3BB0A8C1_0x004ECDB0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004ECDB0 | 0.0% | Pending SHC_3BB0A8C1_0x004ECDE0 | 0.0% | Pending SHC_3BB0A8C1_0x004ECDF0 | 0.0% | Pending -SHC_3BB0A8C1_0x004ECE60 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004ECE60 | 0.0% | Pending SHC_3BB0A8C1_0x004ECEF0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004ECF70 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004ECF70 | 0.0% | Pending -SHC_3BB0A8C1_0x004ECFE0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004ECFE0 | 0.0% | Pending SHC_3BB0A8C1_0x004ED070 | 0.0% | Pending @@ -37923,47 +37923,47 @@ SHC_3BB0A8C1_0x004ED0A4 | 0.0% | Pending SHC_3BB0A8C1_0x004ED0A8 | 0.0% | Pending -SHC_3BB0A8C1_0x004ED0B0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004ED0B0 | 0.0% | Pending -SHC_3BB0A8C1_0x004ED240 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004ED240 | 0.0% | Pending -SHC_3BB0A8C1_0x004ED300 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004ED300 | 0.0% | Pending -SHC_3BB0A8C1_0x004ED3B0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004ED3B0 | 0.0% | Pending -SHC_3BB0A8C1_0x004ED410 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004ED410 | 0.0% | Pending SHC_3BB0A8C1_0x004EDC90 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004EDCB0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004EDCB0 | 0.0% | Pending SHC_3BB0A8C1_0x004EDD00 | 0.0% | Pending -SHC_3BB0A8C1_0x004EDDF0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004EDDF0 | 0.0% | Pending -SHC_3BB0A8C1_0x004EE140 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004EE140 | 0.0% | Pending SHC_3BB0A8C1_0x004EE230 | 0.0% | Pending -SHC_3BB0A8C1_0x004EE430 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004EE430 | 0.0% | Pending -SHC_3BB0A8C1_0x004EE830 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004EE830 | 0.0% | Pending SHC_3BB0A8C1_0x004EE920 | 0.0% | Pending -SHC_3BB0A8C1_0x004EEBD0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004EEBD0 | 0.0% | Pending SHC_3BB0A8C1_0x004EECC0 | 0.0% | Pending -SHC_3BB0A8C1_0x004EEE10 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004EEE10 | 0.0% | Pending SHC_3BB0A8C1_0x004EEEC0 | 0.0% | Pending SHC_3BB0A8C1_0x004EEF20 | 0.0% | Pending -SHC_3BB0A8C1_0x004EF090 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004EF090 | 0.0% | Pending -SHC_3BB0A8C1_0x004EF0D0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004EF0D0 | 0.0% | Pending SHC_3BB0A8C1_0x004EF130 | 0.0% | Pending @@ -37971,43 +37971,43 @@ SHC_3BB0A8C1_0x004EF150 | 0.0% | Pending SHC_3BB0A8C1_0x004EF450 | 0.0% | Pending -SHC_3BB0A8C1_0x004EF8C0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004EF8C0 | 0.0% | Pending SHC_3BB0A8C1_0x004EF900 | 0.0% | Pending SHC_3BB0A8C1_0x004EF920 | 0.0% | Pending -SHC_3BB0A8C1_0x004EFA60 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004EFA60 | 0.0% | Pending -SHC_3BB0A8C1_0x004EFAB0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004EFAB0 | 0.0% | Pending -SHC_3BB0A8C1_0x004EFB90 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004EFB90 | 0.0% | Pending -SHC_3BB0A8C1_0x004EFC30 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004EFC30 | 0.0% | Pending -SHC_3BB0A8C1_0x004EFD90 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004EFD90 | 0.0% | Pending -SHC_3BB0A8C1_0x004EFE30 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004EFE30 | 0.0% | Pending -SHC_3BB0A8C1_0x004EFED0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004EFED0 | 0.0% | Pending -SHC_3BB0A8C1_0x004F0060 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004F0060 | 0.0% | Pending SHC_3BB0A8C1_0x004F0690 | 0.0% | Pending -SHC_3BB0A8C1_0x004F0E80 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004F0E80 | 0.0% | Pending SHC_3BB0A8C1_0x004F1190 | 0.0% | Pending -SHC_3BB0A8C1_0x004F13E0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004F13E0 | 0.0% | Pending -SHC_3BB0A8C1_0x004F13F0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004F13F0 | 0.0% | Pending -SHC_3BB0A8C1_0x004F14F0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004F14F0 | 0.0% | Pending -SHC_3BB0A8C1_0x004F15C0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004F15C0 | 0.0% | Pending -SHC_3BB0A8C1_0x004F1860 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004F1860 | 0.0% | Pending SHC_3BB0A8C1_0x004F1A60 | 0.0% | Pending @@ -38471,7 +38471,7 @@ SHC_3BB0A8C1_0x004F2970 | 0.0% | Pending SHC_3BB0A8C1_0x004F29C0 | 0.0% | Pending -SHC_3BB0A8C1_0x004F2A10 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004F2A10 | 0.0% | Pending SHC_3BB0A8C1_0x004F2A20 | 100.0% | Reimplemented @@ -38591,7 +38591,7 @@ SHC_3BB0A8C1_0x004F38A0 | 0.0% | Pending SHC_3BB0A8C1_0x004F3900 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004F3930 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x004F3930 | 0.0% | Pending SHC_3BB0A8C1_0x004F3960 | 0.0% | Pending @@ -41431,9 +41431,9 @@ SHC_3BB0A8C1_0x00500250 | 0.0% | Pending SHC_3BB0A8C1_0x00500290 | 0.0% | Pending -SHC_3BB0A8C1_0x005002D0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x005002D0 | 0.0% | Pending -SHC_3BB0A8C1_0x00500310 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00500310 | 0.0% | Pending SHC_3BB0A8C1_0x00500370 | 0.0% | Pending @@ -50649,7 +50649,7 @@ SHC_3BB0A8C1_0x00532F80 | 0.0% | Pending SHC_3BB0A8C1_0x00533010 | 0.0% | Pending -SHC_3BB0A8C1_0x00533090 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00533090 | 0.0% | Pending SHC_3BB0A8C1_0x005330A0 | 0.0% | Pending @@ -51081,7 +51081,7 @@ SHC_3BB0A8C1_0x00535700 | 0.0% | Pending SHC_3BB0A8C1_0x00535730 | 0.0% | Pending -SHC_3BB0A8C1_0x005357E0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x005357E0 | 0.0% | Pending SHC_3BB0A8C1_0x00535810 | 0.0% | Pending @@ -51203,7 +51203,7 @@ SHC_3BB0A8C1_0x00536A51 | 0.0% | Pending SHC_3BB0A8C1_0x00536A60 | 0.0% | Pending -SHC_3BB0A8C1_0x00536C70 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00536C70 | 0.0% | Pending SHC_3BB0A8C1_0x00536C90 | 0.0% | Pending @@ -51237,7 +51237,7 @@ SHC_3BB0A8C1_0x005371F0 | 0.0% | Pending SHC_3BB0A8C1_0x00537700 | 0.0% | Pending -SHC_3BB0A8C1_0x005377F0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x005377F0 | 0.0% | Pending SHC_3BB0A8C1_0x00537840 | 0.0% | Pending @@ -59659,11 +59659,11 @@ SHC_3BB0A8C1_0x0053BB70 | 0.0% | Pending SHC_3BB0A8C1_0x0053BB90 | 0.0% | Pending -SHC_3BB0A8C1_0x0053BC20 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x0053BC20 | 0.0% | Pending -SHC_3BB0A8C1_0x0053BE00 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x0053BE00 | 0.0% | Pending -SHC_3BB0A8C1_0x0053C300 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x0053C300 | 0.0% | Pending SHC_3BB0A8C1_0x0053C400 | 0.0% | Pending @@ -60101,7 +60101,7 @@ SHC_3BB0A8C1_0x0053E900 | 0.0% | Pending SHC_3BB0A8C1_0x0053E9F0 | 0.0% | Pending -SHC_3BB0A8C1_0x0053EAA0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x0053EAA0 | 0.0% | Pending SHC_3BB0A8C1_0x0053F07C | 0.0% | Pending @@ -60241,7 +60241,7 @@ SHC_3BB0A8C1_0x0053F92F | 0.0% | Pending SHC_3BB0A8C1_0x0053F930 | 0.0% | Pending -SHC_3BB0A8C1_0x0053F940 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x0053F940 | 0.0% | Pending SHC_3BB0A8C1_0x00540040 | 0.0% | Pending @@ -60327,17 +60327,17 @@ SHC_3BB0A8C1_0x005401C9 | 0.0% | Pending SHC_3BB0A8C1_0x005401CA | 0.0% | Pending -SHC_3BB0A8C1_0x005401D0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x005401D0 | 0.0% | Pending -SHC_3BB0A8C1_0x00540440 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00540440 | 0.0% | Pending -SHC_3BB0A8C1_0x00540EC0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00540EC0 | 0.0% | Pending -SHC_3BB0A8C1_0x005416B0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x005416B0 | 0.0% | Pending -SHC_3BB0A8C1_0x00541A30 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00541A30 | 0.0% | Pending -SHC_3BB0A8C1_0x00541DE0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00541DE0 | 0.0% | Pending SHC_3BB0A8C1_0x00542528 | 0.0% | Pending @@ -60783,7 +60783,7 @@ SHC_3BB0A8C1_0x00542628 | 0.0% | Pending SHC_3BB0A8C1_0x00542629 | 0.0% | Pending -SHC_3BB0A8C1_0x00542630 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00542630 | 0.0% | Pending SHC_3BB0A8C1_0x00542C0C | 0.0% | Pending @@ -61225,21 +61225,21 @@ SHC_3BB0A8C1_0x00542D04 | 0.0% | Pending SHC_3BB0A8C1_0x00542D05 | 0.0% | Pending -SHC_3BB0A8C1_0x00542D10 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00542D10 | 0.0% | Pending -SHC_3BB0A8C1_0x00543340 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00543340 | 0.0% | Pending -SHC_3BB0A8C1_0x00543B80 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00543B80 | 0.0% | Pending -SHC_3BB0A8C1_0x00543DC0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00543DC0 | 0.0% | Pending -SHC_3BB0A8C1_0x00544750 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00544750 | 0.0% | Pending SHC_3BB0A8C1_0x005451A0 | 0.0% | Pending SHC_3BB0A8C1_0x005455E0 | 0.0% | Pending -SHC_3BB0A8C1_0x005459B0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x005459B0 | 0.0% | Pending SHC_3BB0A8C1_0x00545B00 | 0.0% | Pending @@ -61247,7 +61247,7 @@ SHC_3BB0A8C1_0x00545D30 | 0.0% | Pending SHC_3BB0A8C1_0x00545F00 | 0.0% | Pending -SHC_3BB0A8C1_0x005464F0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x005464F0 | 0.0% | Pending SHC_3BB0A8C1_0x00546BA0 | 0.0% | Pending @@ -61265,7 +61265,7 @@ SHC_3BB0A8C1_0x00546BB8 | 0.0% | Pending SHC_3BB0A8C1_0x00546BBC | 0.0% | Pending -SHC_3BB0A8C1_0x00546BC0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00546BC0 | 0.0% | Pending SHC_3BB0A8C1_0x00547790 | 0.0% | Pending @@ -61309,7 +61309,7 @@ SHC_3BB0A8C1_0x005477B5 | 0.0% | Pending SHC_3BB0A8C1_0x005477B6 | 0.0% | Pending -SHC_3BB0A8C1_0x005477C0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x005477C0 | 0.0% | Pending SHC_3BB0A8C1_0x00549050 | 0.0% | Pending @@ -61367,7 +61367,7 @@ SHC_3BB0A8C1_0x00549082 | 0.0% | Pending SHC_3BB0A8C1_0x00549083 | 0.0% | Pending -SHC_3BB0A8C1_0x00549090 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00549090 | 0.0% | Pending SHC_3BB0A8C1_0x00549620 | 0.0% | Pending @@ -61389,7 +61389,7 @@ SHC_3BB0A8C1_0x00549640 | 0.0% | Pending SHC_3BB0A8C1_0x00549644 | 0.0% | Pending -SHC_3BB0A8C1_0x00549650 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00549650 | 0.0% | Pending SHC_3BB0A8C1_0x00549B10 | 0.0% | Pending @@ -62509,43 +62509,43 @@ SHC_3BB0A8C1_0x0054C4F0 | 0.0% | Pending SHC_3BB0A8C1_0x0054C610 | 0.0% | Pending -SHC_3BB0A8C1_0x0054C710 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x0054C710 | 0.0% | Pending -SHC_3BB0A8C1_0x0054D8F0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x0054D8F0 | 0.0% | Pending -SHC_3BB0A8C1_0x0054E6C0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x0054E6C0 | 0.0% | Pending -SHC_3BB0A8C1_0x0054F860 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x0054F860 | 0.0% | Pending -SHC_3BB0A8C1_0x00550A50 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00550A50 | 0.0% | Pending -SHC_3BB0A8C1_0x00550D70 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00550D70 | 0.0% | Pending -SHC_3BB0A8C1_0x00551980 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00551980 | 0.0% | Pending -SHC_3BB0A8C1_0x005521D0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x005521D0 | 0.0% | Pending -SHC_3BB0A8C1_0x00552F80 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00552F80 | 0.0% | Pending -SHC_3BB0A8C1_0x00553AE0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00553AE0 | 0.0% | Pending -SHC_3BB0A8C1_0x00554500 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00554500 | 0.0% | Pending -SHC_3BB0A8C1_0x00554CC0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00554CC0 | 0.0% | Pending -SHC_3BB0A8C1_0x00555880 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00555880 | 0.0% | Pending -SHC_3BB0A8C1_0x005565D0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x005565D0 | 0.0% | Pending -SHC_3BB0A8C1_0x00557230 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00557230 | 0.0% | Pending -SHC_3BB0A8C1_0x00557F70 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00557F70 | 0.0% | Pending -SHC_3BB0A8C1_0x00558CB0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00558CB0 | 0.0% | Pending -SHC_3BB0A8C1_0x005598D0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x005598D0 | 0.0% | Pending -SHC_3BB0A8C1_0x0055A800 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x0055A800 | 0.0% | Pending SHC_3BB0A8C1_0x0055C6D0 | 0.0% | Pending @@ -62845,7 +62845,7 @@ SHC_3BB0A8C1_0x0055C7A8 | 0.0% | Pending SHC_3BB0A8C1_0x0055C7A9 | 0.0% | Pending -SHC_3BB0A8C1_0x0055C7B0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x0055C7B0 | 0.0% | Pending SHC_3BB0A8C1_0x0055D988 | 0.0% | Pending @@ -63133,7 +63133,7 @@ SHC_3BB0A8C1_0x0055DA4E | 0.0% | Pending SHC_3BB0A8C1_0x0055DA4F | 0.0% | Pending -SHC_3BB0A8C1_0x0055DA50 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x0055DA50 | 0.0% | Pending SHC_3BB0A8C1_0x0055F030 | 0.0% | Pending @@ -63429,7 +63429,7 @@ SHC_3BB0A8C1_0x0055F100 | 0.0% | Pending SHC_3BB0A8C1_0x0055F101 | 0.0% | Pending -SHC_3BB0A8C1_0x0055F110 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x0055F110 | 0.0% | Pending SHC_3BB0A8C1_0x00560638 | 0.0% | Pending @@ -63719,7 +63719,7 @@ SHC_3BB0A8C1_0x005606FC | 0.0% | Pending SHC_3BB0A8C1_0x005606FD | 0.0% | Pending -SHC_3BB0A8C1_0x00560700 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00560700 | 0.0% | Pending SHC_3BB0A8C1_0x00561B3C | 0.0% | Pending @@ -64013,7 +64013,7 @@ SHC_3BB0A8C1_0x00561C08 | 0.0% | Pending SHC_3BB0A8C1_0x00561C09 | 0.0% | Pending -SHC_3BB0A8C1_0x00561C10 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00561C10 | 0.0% | Pending SHC_3BB0A8C1_0x005629E4 | 0.0% | Pending @@ -64291,7 +64291,7 @@ SHC_3BB0A8C1_0x00562A99 | 0.0% | Pending SHC_3BB0A8C1_0x00562A9A | 0.0% | Pending -SHC_3BB0A8C1_0x00562AA0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00562AA0 | 0.0% | Pending SHC_3BB0A8C1_0x00563854 | 0.0% | Pending @@ -64567,7 +64567,7 @@ SHC_3BB0A8C1_0x00563905 | 0.0% | Pending SHC_3BB0A8C1_0x00563906 | 0.0% | Pending -SHC_3BB0A8C1_0x00563910 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00563910 | 0.0% | Pending SHC_3BB0A8C1_0x0056419C | 0.0% | Pending @@ -64843,7 +64843,7 @@ SHC_3BB0A8C1_0x0056424D | 0.0% | Pending SHC_3BB0A8C1_0x0056424E | 0.0% | Pending -SHC_3BB0A8C1_0x00564250 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00564250 | 0.0% | Pending SHC_3BB0A8C1_0x00565F1C | 0.0% | Pending @@ -65151,13 +65151,13 @@ SHC_3BB0A8C1_0x00566004 | 0.0% | Pending SHC_3BB0A8C1_0x00566005 | 0.0% | Pending -SHC_3BB0A8C1_0x00566010 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00566010 | 0.0% | Pending -SHC_3BB0A8C1_0x00566750 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00566750 | 0.0% | Pending -SHC_3BB0A8C1_0x00567320 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00567320 | 0.0% | Pending -SHC_3BB0A8C1_0x00567640 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00567640 | 0.0% | Pending SHC_3BB0A8C1_0x00568264 | 0.0% | Pending @@ -65437,33 +65437,33 @@ SHC_3BB0A8C1_0x0056831D | 0.0% | Pending SHC_3BB0A8C1_0x0056831E | 0.0% | Pending -SHC_3BB0A8C1_0x00568320 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00568320 | 0.0% | Pending SHC_3BB0A8C1_0x00568730 | 0.0% | Pending SHC_3BB0A8C1_0x00569300 | 0.0% | Pending -SHC_3BB0A8C1_0x00569410 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00569410 | 0.0% | Pending SHC_3BB0A8C1_0x0056A360 | 0.0% | Pending -SHC_3BB0A8C1_0x0056A3F0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x0056A3F0 | 0.0% | Pending SHC_3BB0A8C1_0x0056A8A0 | 0.0% | Pending SHC_3BB0A8C1_0x0056AF20 | 0.0% | Pending -SHC_3BB0A8C1_0x0056B0E0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x0056B0E0 | 0.0% | Pending -SHC_3BB0A8C1_0x0056B970 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x0056B970 | 0.0% | Pending -SHC_3BB0A8C1_0x0056C560 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x0056C560 | 0.0% | Pending SHC_3BB0A8C1_0x0056DAC0 | 0.0% | Pending -SHC_3BB0A8C1_0x0056E190 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x0056E190 | 0.0% | Pending -SHC_3BB0A8C1_0x0056ECD0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x0056ECD0 | 0.0% | Pending SHC_3BB0A8C1_0x0056F110 | 0.0% | Pending @@ -65471,9 +65471,9 @@ SHC_3BB0A8C1_0x0056F7E0 | 0.0% | Pending SHC_3BB0A8C1_0x0056F910 | 0.0% | Pending -SHC_3BB0A8C1_0x0056F9B0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x0056F9B0 | 0.0% | Pending -SHC_3BB0A8C1_0x00570400 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00570400 | 0.0% | Pending SHC_3BB0A8C1_0x00571B34 | 0.0% | Pending @@ -65763,7 +65763,7 @@ SHC_3BB0A8C1_0x00571BFE | 0.0% | Pending SHC_3BB0A8C1_0x00571BFF | 0.0% | Pending -SHC_3BB0A8C1_0x00571C00 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00571C00 | 0.0% | Pending SHC_3BB0A8C1_0x00572DB0 | 0.0% | Pending @@ -66053,7 +66053,7 @@ SHC_3BB0A8C1_0x00572E74 | 0.0% | Pending SHC_3BB0A8C1_0x00572E75 | 0.0% | Pending -SHC_3BB0A8C1_0x00572E80 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00572E80 | 0.0% | Pending SHC_3BB0A8C1_0x00574408 | 0.0% | Pending @@ -66095,7 +66095,7 @@ SHC_3BB0A8C1_0x00574450 | 0.0% | Pending SHC_3BB0A8C1_0x00574454 | 0.0% | Pending -SHC_3BB0A8C1_0x005744D0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x005744D0 | 0.0% | Pending SHC_3BB0A8C1_0x0057574C | 0.0% | Pending @@ -66395,9 +66395,9 @@ SHC_3BB0A8C1_0x00575818 | 0.0% | Pending SHC_3BB0A8C1_0x00575819 | 0.0% | Pending -SHC_3BB0A8C1_0x00575820 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00575820 | 0.0% | Pending -SHC_3BB0A8C1_0x00575C40 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00575C40 | 0.0% | Pending SHC_3BB0A8C1_0x00576930 | 0.0% | Pending @@ -66675,7 +66675,7 @@ SHC_3BB0A8C1_0x005769E5 | 0.0% | Pending SHC_3BB0A8C1_0x005769E6 | 0.0% | Pending -SHC_3BB0A8C1_0x005769F0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x005769F0 | 0.0% | Pending SHC_3BB0A8C1_0x00577BF8 | 0.0% | Pending @@ -66963,7 +66963,7 @@ SHC_3BB0A8C1_0x00577CBE | 0.0% | Pending SHC_3BB0A8C1_0x00577CBF | 0.0% | Pending -SHC_3BB0A8C1_0x00577CC0 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x00577CC0 | 0.0% | Pending SHC_3BB0A8C1_0x005781A0 | 0.0% | Pending @@ -67265,7 +67265,7 @@ SHC_3BB0A8C1_0x0057AB42 | 0.0% | Pending SHC_3BB0A8C1_0x0057AB43 | 0.0% | Pending -SHC_3BB0A8C1_0x0057AB50 | 0.0% | Reimplemented +SHC_3BB0A8C1_0x0057AB50 | 0.0% | Pending SHC_3BB0A8C1_0x0057B90C | 0.0% | Pending @@ -67953,7 +67953,7 @@ SHC_3BB0A8C1_0x005816B9 | 0.0% | Pending SHC_3BB0A8C1_0x005816C3 | 0.0% | Pending -SHC_3BB0A8C1_0x005816EE | 0.0% | Reimplemented +SHC_3BB0A8C1_0x005816EE | 0.0% | Pending SHC_3BB0A8C1_0x005816FB | 0.0% | Pending From a02ad88e4e27e4ff68385721536180304885ca96 Mon Sep 17 00:00:00 2001 From: sourcehold Date: Mon, 28 Sep 2026 22:08:03 +0200 Subject: [PATCH 222/241] reset status file --- status/addresses-SHC-3BB0A8C1.txt | 556 +++++++++++++++--------------- 1 file changed, 278 insertions(+), 278 deletions(-) diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index a6cdca7e5..b80b8635f 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -381,9 +381,9 @@ SHC_3BB0A8C1_0x00400260 | 0.0% | Pending SHC_3BB0A8C1_0x00400288 | 0.0% | Pending -SHC_3BB0A8C1_0x00401000 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00401000 | 0.0% | Pending -SHC_3BB0A8C1_0x00401040 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00401040 | 0.0% | Pending SHC_3BB0A8C1_0x00401060 | 0.0% | Pending @@ -415,13 +415,13 @@ SHC_3BB0A8C1_0x004012F0 | 0.0% | Pending SHC_3BB0A8C1_0x00401380 | 0.0% | Pending -SHC_3BB0A8C1_0x00401400 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00401400 | 0.0% | Pending -SHC_3BB0A8C1_0x00401430 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00401430 | 0.0% | Pending SHC_3BB0A8C1_0x00401460 | 0.0% | Pending -SHC_3BB0A8C1_0x00401540 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00401540 | 0.0% | Pending SHC_3BB0A8C1_0x00401570 | 0.0% | Pending @@ -445,11 +445,11 @@ SHC_3BB0A8C1_0x004019D0 | 0.0% | Pending SHC_3BB0A8C1_0x00401A50 | 0.0% | Pending -SHC_3BB0A8C1_0x00401AE0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00401AE0 | 0.0% | Pending SHC_3BB0A8C1_0x00401B20 | 0.0% | Pending -SHC_3BB0A8C1_0x00401B60 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00401B60 | 0.0% | Pending SHC_3BB0A8C1_0x00401BA0 | 0.0% | Pending @@ -531,7 +531,7 @@ SHC_3BB0A8C1_0x004036F0 | 0.0% | Pending SHC_3BB0A8C1_0x00403790 | 0.0% | Pending -SHC_3BB0A8C1_0x004038A0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004038A0 | 0.0% | Pending SHC_3BB0A8C1_0x004038B0 | 0.0% | Pending @@ -541,7 +541,7 @@ SHC_3BB0A8C1_0x00403980 | 0.0% | Pending SHC_3BB0A8C1_0x004039B0 | 0.0% | Pending -SHC_3BB0A8C1_0x004039F0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004039F0 | 0.0% | Pending SHC_3BB0A8C1_0x00403A20 | 0.0% | Pending @@ -2575,7 +2575,7 @@ SHC_3BB0A8C1_0x00408E30 | 0.0% | Pending SHC_3BB0A8C1_0x00408E70 | 0.0% | Pending -SHC_3BB0A8C1_0x00408EB0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00408EB0 | 0.0% | Pending SHC_3BB0A8C1_0x00408ED0 | 0.0% | Pending @@ -2597,9 +2597,9 @@ SHC_3BB0A8C1_0x00409200 | 0.0% | Pending SHC_3BB0A8C1_0x004092B0 | 0.0% | Pending -SHC_3BB0A8C1_0x004092C0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004092C0 | 0.0% | Pending -SHC_3BB0A8C1_0x004092E0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004092E0 | 0.0% | Pending SHC_3BB0A8C1_0x00409300 | 0.0% | Pending @@ -4331,7 +4331,7 @@ SHC_3BB0A8C1_0x0040BF40 | 0.0% | Pending SHC_3BB0A8C1_0x0040BFA0 | 0.0% | Pending -SHC_3BB0A8C1_0x0040BFD0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0040BFD0 | 0.0% | Pending SHC_3BB0A8C1_0x0040BFE0 | 0.0% | Pending @@ -5029,13 +5029,13 @@ SHC_3BB0A8C1_0x0040F240 | 0.0% | Pending SHC_3BB0A8C1_0x0040F360 | 0.0% | Pending -SHC_3BB0A8C1_0x0040F3D0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0040F3D0 | 0.0% | Pending SHC_3BB0A8C1_0x0040F3F0 | 0.0% | Pending -SHC_3BB0A8C1_0x0040F420 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0040F420 | 0.0% | Pending -SHC_3BB0A8C1_0x0040F440 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0040F440 | 0.0% | Pending SHC_3BB0A8C1_0x0040F460 | 0.0% | Pending @@ -5543,7 +5543,7 @@ SHC_3BB0A8C1_0x00417B90 | 0.0% | Pending SHC_3BB0A8C1_0x00417FD0 | 0.0% | Pending -SHC_3BB0A8C1_0x004180E0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004180E0 | 0.0% | Pending SHC_3BB0A8C1_0x00418100 | 0.0% | Pending @@ -5561,7 +5561,7 @@ SHC_3BB0A8C1_0x00418740 | 0.0% | Pending SHC_3BB0A8C1_0x00418880 | 0.0% | Pending -SHC_3BB0A8C1_0x004188C0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004188C0 | 0.0% | Pending SHC_3BB0A8C1_0x00418900 | 0.0% | Pending @@ -5575,7 +5575,7 @@ SHC_3BB0A8C1_0x00418C80 | 0.0% | Pending SHC_3BB0A8C1_0x00418EC0 | 0.0% | Pending -SHC_3BB0A8C1_0x00418F70 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00418F70 | 0.0% | Pending SHC_3BB0A8C1_0x00418F90 | 0.0% | Pending @@ -5817,13 +5817,13 @@ SHC_3BB0A8C1_0x00419EB0 | 0.0% | Pending SHC_3BB0A8C1_0x00419FA0 | 0.0% | Pending -SHC_3BB0A8C1_0x0041A060 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0041A060 | 0.0% | Pending -SHC_3BB0A8C1_0x0041A0A0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0041A0A0 | 0.0% | Pending SHC_3BB0A8C1_0x0041A0B0 | 0.0% | Pending -SHC_3BB0A8C1_0x0041A0D0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0041A0D0 | 0.0% | Pending SHC_3BB0A8C1_0x0041A100 | 0.0% | Pending @@ -6043,17 +6043,17 @@ SHC_3BB0A8C1_0x0041A2AE | 0.0% | Pending SHC_3BB0A8C1_0x0041A2AF | 0.0% | Pending -SHC_3BB0A8C1_0x0041A2B0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0041A2B0 | 0.0% | Pending SHC_3BB0A8C1_0x0041A2E0 | 0.0% | Pending SHC_3BB0A8C1_0x0041A340 | 0.0% | Pending -SHC_3BB0A8C1_0x0041A390 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0041A390 | 0.0% | Pending -SHC_3BB0A8C1_0x0041A3C0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0041A3C0 | 0.0% | Pending -SHC_3BB0A8C1_0x0041A3F0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0041A3F0 | 0.0% | Pending SHC_3BB0A8C1_0x0041A420 | 0.0% | Pending @@ -6061,17 +6061,17 @@ SHC_3BB0A8C1_0x0041A460 | 0.0% | Pending SHC_3BB0A8C1_0x0041A520 | 0.0% | Pending -SHC_3BB0A8C1_0x0041A5C0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0041A5C0 | 0.0% | Pending -SHC_3BB0A8C1_0x0041A5F0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0041A5F0 | 0.0% | Pending -SHC_3BB0A8C1_0x0041A620 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0041A620 | 0.0% | Pending SHC_3BB0A8C1_0x0041A650 | 0.0% | Pending SHC_3BB0A8C1_0x0041A680 | 0.0% | Pending -SHC_3BB0A8C1_0x0041A710 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0041A710 | 0.0% | Pending SHC_3BB0A8C1_0x0041A740 | 100.0% | Reimplemented @@ -6657,13 +6657,13 @@ SHC_3BB0A8C1_0x00424680 | 0.0% | Pending SHC_3BB0A8C1_0x004246B0 | 0.0% | Pending -SHC_3BB0A8C1_0x004246E0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004246E0 | 0.0% | Pending SHC_3BB0A8C1_0x00424700 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00424720 | 0.0% | Pending -SHC_3BB0A8C1_0x00424770 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00424770 | 0.0% | Pending SHC_3BB0A8C1_0x004247A0 | 0.0% | Pending @@ -6675,7 +6675,7 @@ SHC_3BB0A8C1_0x00424AD0 | 0.0% | Pending SHC_3BB0A8C1_0x00424B10 | 0.0% | Pending -SHC_3BB0A8C1_0x00424BD0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00424BD0 | 0.0% | Pending SHC_3BB0A8C1_0x00424BE0 | 0.0% | Pending @@ -6805,7 +6805,7 @@ SHC_3BB0A8C1_0x00427180 | 0.0% | Pending SHC_3BB0A8C1_0x004271E0 | 0.0% | Pending -SHC_3BB0A8C1_0x00427210 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00427210 | 0.0% | Pending SHC_3BB0A8C1_0x00427240 | 0.0% | Pending @@ -6867,7 +6867,7 @@ SHC_3BB0A8C1_0x00428480 | 0.0% | Pending SHC_3BB0A8C1_0x00428590 | 0.0% | Pending -SHC_3BB0A8C1_0x004285C0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004285C0 | 0.0% | Pending SHC_3BB0A8C1_0x004285F0 | 0.0% | Pending @@ -6891,7 +6891,7 @@ SHC_3BB0A8C1_0x00428A60 | 0.0% | Pending SHC_3BB0A8C1_0x00428AC0 | 0.0% | Pending -SHC_3BB0A8C1_0x00429630 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00429630 | 0.0% | Pending SHC_3BB0A8C1_0x00429650 | 0.0% | Pending @@ -6973,9 +6973,9 @@ SHC_3BB0A8C1_0x0042AC34 | 0.0% | Pending SHC_3BB0A8C1_0x0042AC38 | 0.0% | Pending -SHC_3BB0A8C1_0x0042AC40 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0042AC40 | 0.0% | Pending -SHC_3BB0A8C1_0x0042AC60 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0042AC60 | 0.0% | Pending SHC_3BB0A8C1_0x0042AC70 | 0.0% | Pending @@ -7453,7 +7453,7 @@ SHC_3BB0A8C1_0x0042BF00 | 0.0% | Pending SHC_3BB0A8C1_0x0042BFC0 | 0.0% | Pending -SHC_3BB0A8C1_0x0042C060 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0042C060 | 0.0% | Pending SHC_3BB0A8C1_0x0042C090 | 0.0% | Pending @@ -11083,9 +11083,9 @@ SHC_3BB0A8C1_0x00431B60 | 0.0% | Pending SHC_3BB0A8C1_0x00433030 | 0.0% | Pending -SHC_3BB0A8C1_0x00433200 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00433200 | 0.0% | Pending -SHC_3BB0A8C1_0x00433230 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00433230 | 0.0% | Pending SHC_3BB0A8C1_0x00433260 | 0.0% | Pending @@ -11135,9 +11135,9 @@ SHC_3BB0A8C1_0x00434224 | 0.0% | Pending SHC_3BB0A8C1_0x00434228 | 0.0% | Pending -SHC_3BB0A8C1_0x00434230 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00434230 | 0.0% | Pending -SHC_3BB0A8C1_0x00434260 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00434260 | 0.0% | Pending SHC_3BB0A8C1_0x00434270 | 0.0% | Pending @@ -13357,7 +13357,7 @@ SHC_3BB0A8C1_0x0043937C | 0.0% | Pending SHC_3BB0A8C1_0x00439380 | 0.0% | Pending -SHC_3BB0A8C1_0x00439390 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00439390 | 0.0% | Pending SHC_3BB0A8C1_0x004393C0 | 0.0% | Pending @@ -13393,15 +13393,15 @@ SHC_3BB0A8C1_0x00439890 | 0.0% | Pending SHC_3BB0A8C1_0x004398B0 | 0.0% | Pending -SHC_3BB0A8C1_0x0043A850 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0043A850 | 0.0% | Pending -SHC_3BB0A8C1_0x0043A860 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0043A860 | 0.0% | Pending -SHC_3BB0A8C1_0x0043A880 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0043A880 | 0.0% | Pending -SHC_3BB0A8C1_0x0043A8C0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0043A8C0 | 0.0% | Pending -SHC_3BB0A8C1_0x0043A8D0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0043A8D0 | 0.0% | Pending SHC_3BB0A8C1_0x0043A8E0 | 0.0% | Pending @@ -13597,7 +13597,7 @@ SHC_3BB0A8C1_0x0043E6C0 | 0.0% | Pending SHC_3BB0A8C1_0x0043F2B0 | 0.0% | Pending -SHC_3BB0A8C1_0x0043F2C0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0043F2C0 | 0.0% | Pending SHC_3BB0A8C1_0x0043F2F0 | 0.0% | Pending @@ -13611,7 +13611,7 @@ SHC_3BB0A8C1_0x0043FBB0 | 0.0% | Pending SHC_3BB0A8C1_0x0043FBF0 | 0.0% | Pending -SHC_3BB0A8C1_0x0043FC80 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0043FC80 | 0.0% | Pending SHC_3BB0A8C1_0x0043FCA0 | 0.0% | Pending @@ -13631,13 +13631,13 @@ SHC_3BB0A8C1_0x00440280 | 0.0% | Pending SHC_3BB0A8C1_0x00440360 | 0.0% | Pending -SHC_3BB0A8C1_0x004403D0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004403D0 | 0.0% | Pending -SHC_3BB0A8C1_0x00440400 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00440400 | 0.0% | Pending -SHC_3BB0A8C1_0x00440410 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00440410 | 0.0% | Pending -SHC_3BB0A8C1_0x00440420 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00440420 | 0.0% | Pending SHC_3BB0A8C1_0x00440430 | 0.0% | Pending @@ -16649,11 +16649,11 @@ SHC_3BB0A8C1_0x0044A720 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0044A830 | 0.0% | Pending -SHC_3BB0A8C1_0x0044AA70 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0044AA70 | 0.0% | Pending -SHC_3BB0A8C1_0x0044AA80 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0044AA80 | 0.0% | Pending -SHC_3BB0A8C1_0x0044AAA0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0044AAA0 | 0.0% | Pending SHC_3BB0A8C1_0x0044AAB0 | 100.0% | Reimplemented @@ -16867,7 +16867,7 @@ SHC_3BB0A8C1_0x0044B680 | 0.0% | Pending SHC_3BB0A8C1_0x0044B760 | 0.0% | Pending -SHC_3BB0A8C1_0x0044B7D0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0044B7D0 | 0.0% | Pending SHC_3BB0A8C1_0x0044B800 | 0.0% | Pending @@ -16891,7 +16891,7 @@ SHC_3BB0A8C1_0x0044C3F0 | 0.0% | Pending SHC_3BB0A8C1_0x0044C3F4 | 0.0% | Pending -SHC_3BB0A8C1_0x0044C400 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0044C400 | 0.0% | Pending SHC_3BB0A8C1_0x0044C410 | 100.0% | Reimplemented @@ -16915,17 +16915,17 @@ SHC_3BB0A8C1_0x0044CBE0 | 0.0% | Pending SHC_3BB0A8C1_0x0044CC30 | 0.0% | Pending -SHC_3BB0A8C1_0x0044CCA0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0044CCA0 | 0.0% | Pending -SHC_3BB0A8C1_0x0044CCC0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0044CCC0 | 0.0% | Pending -SHC_3BB0A8C1_0x0044CCD0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0044CCD0 | 0.0% | Pending -SHC_3BB0A8C1_0x0044CCF0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0044CCF0 | 0.0% | Pending -SHC_3BB0A8C1_0x0044CD10 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0044CD10 | 0.0% | Pending -SHC_3BB0A8C1_0x0044CD30 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0044CD30 | 0.0% | Pending SHC_3BB0A8C1_0x0044CD40 | 0.0% | Pending @@ -16979,15 +16979,15 @@ SHC_3BB0A8C1_0x00454700 | 0.0% | Pending SHC_3BB0A8C1_0x004547C0 | 0.0% | Pending -SHC_3BB0A8C1_0x004548D0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004548D0 | 0.0% | Pending SHC_3BB0A8C1_0x00454900 | 0.0% | Pending SHC_3BB0A8C1_0x00454960 | 0.0% | Pending -SHC_3BB0A8C1_0x00454990 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00454990 | 0.0% | Pending -SHC_3BB0A8C1_0x004549C0 | 40.0% | Register allocation differs +SHC_3BB0A8C1_0x004549C0 | 0.0% | Pending SHC_3BB0A8C1_0x004549F0 | 0.0% | Pending @@ -16999,9 +16999,9 @@ SHC_3BB0A8C1_0x00454CE0 | 0.0% | Pending SHC_3BB0A8C1_0x00454D20 | 0.0% | Pending -SHC_3BB0A8C1_0x00454EE0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00454EE0 | 0.0% | Pending -SHC_3BB0A8C1_0x00454EF0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00454EF0 | 0.0% | Pending SHC_3BB0A8C1_0x00454F00 | 0.0% | Pending @@ -17009,7 +17009,7 @@ SHC_3BB0A8C1_0x00455050 | 0.0% | Pending SHC_3BB0A8C1_0x00455250 | 0.0% | Pending -SHC_3BB0A8C1_0x00455270 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00455270 | 0.0% | Pending SHC_3BB0A8C1_0x00455290 | 0.0% | Pending @@ -17045,7 +17045,7 @@ SHC_3BB0A8C1_0x00455E40 | 0.0% | Pending SHC_3BB0A8C1_0x004560F0 | 0.0% | Pending -SHC_3BB0A8C1_0x004563B0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004563B0 | 0.0% | Pending SHC_3BB0A8C1_0x004563D0 | 0.0% | Pending @@ -17693,11 +17693,11 @@ SHC_3BB0A8C1_0x004585B0 | 0.0% | Pending SHC_3BB0A8C1_0x004585F0 | 0.0% | Pending -SHC_3BB0A8C1_0x004586D0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004586D0 | 0.0% | Pending SHC_3BB0A8C1_0x004586F0 | 0.0% | Pending -SHC_3BB0A8C1_0x00458700 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00458700 | 0.0% | Pending SHC_3BB0A8C1_0x00458720 | 0.0% | Pending @@ -17713,13 +17713,13 @@ SHC_3BB0A8C1_0x00458820 | 0.0% | Pending SHC_3BB0A8C1_0x00458840 | 0.0% | Pending -SHC_3BB0A8C1_0x00458890 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00458890 | 0.0% | Pending SHC_3BB0A8C1_0x004588A0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004588D0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004588D0 | 0.0% | Pending -SHC_3BB0A8C1_0x004588F0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004588F0 | 0.0% | Pending SHC_3BB0A8C1_0x00458910 | 100.0% | Reimplemented @@ -17757,11 +17757,11 @@ SHC_3BB0A8C1_0x00458F70 | 0.0% | Pending SHC_3BB0A8C1_0x00459080 | 0.0% | Pending -SHC_3BB0A8C1_0x00459140 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00459140 | 0.0% | Pending -SHC_3BB0A8C1_0x00459170 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00459170 | 0.0% | Pending -SHC_3BB0A8C1_0x004591B0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004591B0 | 0.0% | Pending SHC_3BB0A8C1_0x004591F0 | 0.0% | Pending @@ -17889,7 +17889,7 @@ SHC_3BB0A8C1_0x004595D0 | 0.0% | Pending SHC_3BB0A8C1_0x00459640 | 0.0% | Pending -SHC_3BB0A8C1_0x004596D0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004596D0 | 0.0% | Pending SHC_3BB0A8C1_0x00459700 | 0.0% | Pending @@ -17907,9 +17907,9 @@ SHC_3BB0A8C1_0x00459A40 | 0.0% | Pending SHC_3BB0A8C1_0x00459B50 | 0.0% | Pending -SHC_3BB0A8C1_0x00459BB0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00459BB0 | 0.0% | Pending -SHC_3BB0A8C1_0x00459BE0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00459BE0 | 0.0% | Pending SHC_3BB0A8C1_0x00459BF0 | 0.0% | Pending @@ -18025,7 +18025,7 @@ SHC_3BB0A8C1_0x0045AE70 | 0.0% | Pending SHC_3BB0A8C1_0x0045AEB0 | 0.0% | Pending -SHC_3BB0A8C1_0x0045AF00 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0045AF00 | 0.0% | Pending SHC_3BB0A8C1_0x0045AF30 | 0.0% | Pending @@ -18035,7 +18035,7 @@ SHC_3BB0A8C1_0x0045B3A0 | 0.0% | Pending SHC_3BB0A8C1_0x0045B3E0 | 0.0% | Pending -SHC_3BB0A8C1_0x0045B460 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0045B460 | 0.0% | Pending SHC_3BB0A8C1_0x0045B4A0 | 0.0% | Pending @@ -18145,11 +18145,11 @@ SHC_3BB0A8C1_0x0045CA20 | 0.0% | Pending SHC_3BB0A8C1_0x0045CD10 | 0.0% | Pending -SHC_3BB0A8C1_0x0045D060 | 100.0% | Our version optimizes to a jump, while the original re-pushes the args +SHC_3BB0A8C1_0x0045D060 | 0.0% | Pending SHC_3BB0A8C1_0x0045D080 | 0.0% | Pending -SHC_3BB0A8C1_0x0045D0B0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0045D0B0 | 0.0% | Pending SHC_3BB0A8C1_0x0045D0C0 | 0.0% | Pending @@ -18335,7 +18335,7 @@ SHC_3BB0A8C1_0x0045D430 | 0.0% | Pending SHC_3BB0A8C1_0x0045D460 | 0.0% | Pending -SHC_3BB0A8C1_0x0045D690 | 60.0% | Probably needs to be part of 0x004403d0 +SHC_3BB0A8C1_0x0045D690 | 0.0% | Pending SHC_3BB0A8C1_0x0045D6C0 | 0.0% | Pending @@ -18349,9 +18349,9 @@ SHC_3BB0A8C1_0x0045D950 | 0.0% | Pending SHC_3BB0A8C1_0x0045D990 | 0.0% | Pending -SHC_3BB0A8C1_0x0045D9E0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0045D9E0 | 0.0% | Pending -SHC_3BB0A8C1_0x0045DA20 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0045DA20 | 0.0% | Pending SHC_3BB0A8C1_0x0045DA40 | 0.0% | Pending @@ -18747,7 +18747,7 @@ SHC_3BB0A8C1_0x0045F0CD | 0.0% | Pending SHC_3BB0A8C1_0x0045F0D0 | 0.0% | Pending -SHC_3BB0A8C1_0x0045F120 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0045F120 | 0.0% | Pending SHC_3BB0A8C1_0x0045F130 | 0.0% | Pending @@ -18833,7 +18833,7 @@ SHC_3BB0A8C1_0x004614F0 | 0.0% | Pending SHC_3BB0A8C1_0x00461520 | 0.0% | Pending -SHC_3BB0A8C1_0x00461550 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00461550 | 0.0% | Pending SHC_3BB0A8C1_0x00461570 | 0.0% | Pending @@ -18893,7 +18893,7 @@ SHC_3BB0A8C1_0x00461F90 | 0.0% | Pending SHC_3BB0A8C1_0x004620F0 | 0.0% | Pending -SHC_3BB0A8C1_0x00462150 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00462150 | 0.0% | Pending SHC_3BB0A8C1_0x00462190 | 0.0% | Pending @@ -19153,7 +19153,7 @@ SHC_3BB0A8C1_0x00462FE0 | 0.0% | Pending SHC_3BB0A8C1_0x00462FF0 | 0.0% | Pending -SHC_3BB0A8C1_0x004630B0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004630B0 | 0.0% | Pending SHC_3BB0A8C1_0x004630D0 | 0.0% | Pending @@ -19843,11 +19843,11 @@ SHC_3BB0A8C1_0x00464856 | 0.0% | Pending SHC_3BB0A8C1_0x00464860 | 0.0% | Pending -SHC_3BB0A8C1_0x004649C0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004649C0 | 0.0% | Pending SHC_3BB0A8C1_0x004649D0 | 0.0% | Pending -SHC_3BB0A8C1_0x00464D90 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00464D90 | 0.0% | Pending SHC_3BB0A8C1_0x00464DA0 | 0.0% | Pending @@ -19857,13 +19857,13 @@ SHC_3BB0A8C1_0x00464EF0 | 0.0% | Pending SHC_3BB0A8C1_0x00465040 | 0.0% | Pending -SHC_3BB0A8C1_0x00465080 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00465080 | 0.0% | Pending -SHC_3BB0A8C1_0x004650A0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004650A0 | 0.0% | Pending -SHC_3BB0A8C1_0x004650C0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004650C0 | 0.0% | Pending -SHC_3BB0A8C1_0x004650F0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004650F0 | 0.0% | Pending SHC_3BB0A8C1_0x00465110 | 0.0% | Pending @@ -19905,15 +19905,15 @@ SHC_3BB0A8C1_0x00465700 | 0.0% | Pending SHC_3BB0A8C1_0x004657B0 | 0.0% | Pending -SHC_3BB0A8C1_0x00465800 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00465800 | 0.0% | Pending SHC_3BB0A8C1_0x00465820 | 0.0% | Pending -SHC_3BB0A8C1_0x00465890 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00465890 | 0.0% | Pending SHC_3BB0A8C1_0x004658B0 | 0.0% | Pending -SHC_3BB0A8C1_0x00465920 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00465920 | 0.0% | Pending SHC_3BB0A8C1_0x00465950 | 0.0% | Pending @@ -19977,7 +19977,7 @@ SHC_3BB0A8C1_0x004668E4 | 0.0% | Pending SHC_3BB0A8C1_0x004668F0 | 0.0% | Pending -SHC_3BB0A8C1_0x00466920 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00466920 | 0.0% | Pending SHC_3BB0A8C1_0x00466950 | 0.0% | Pending @@ -19987,9 +19987,9 @@ SHC_3BB0A8C1_0x00466C20 | 0.0% | Pending SHC_3BB0A8C1_0x00466D10 | 0.0% | Pending -SHC_3BB0A8C1_0x00466E00 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00466E00 | 0.0% | Pending -SHC_3BB0A8C1_0x00466E10 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00466E10 | 0.0% | Pending SHC_3BB0A8C1_0x00466E20 | 0.0% | Pending @@ -20051,7 +20051,7 @@ SHC_3BB0A8C1_0x00467E04 | 0.0% | Pending SHC_3BB0A8C1_0x00467E26 | 0.0% | Pending -SHC_3BB0A8C1_0x00467E40 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00467E40 | 0.0% | Pending SHC_3BB0A8C1_0x00467E50 | 0.0% | Pending @@ -20059,13 +20059,13 @@ SHC_3BB0A8C1_0x00467EC0 | 0.0% | Pending SHC_3BB0A8C1_0x00467F50 | 0.0% | Pending -SHC_3BB0A8C1_0x00467F60 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00467F60 | 0.0% | Pending SHC_3BB0A8C1_0x00467F80 | 0.0% | Pending SHC_3BB0A8C1_0x00468030 | 0.0% | Pending -SHC_3BB0A8C1_0x004680B0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004680B0 | 0.0% | Pending SHC_3BB0A8C1_0x004680C0 | 0.0% | Pending @@ -20097,7 +20097,7 @@ SHC_3BB0A8C1_0x00468C30 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00468C40 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00468C50 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00468C50 | 0.0% | Pending SHC_3BB0A8C1_0x00468C80 | 0.0% | Pending @@ -20123,23 +20123,23 @@ SHC_3BB0A8C1_0x004694A0 | 0.0% | Pending SHC_3BB0A8C1_0x00469790 | 0.0% | Pending -SHC_3BB0A8C1_0x004697C0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004697C0 | 0.0% | Pending -SHC_3BB0A8C1_0x004697E0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004697E0 | 0.0% | Pending SHC_3BB0A8C1_0x00469800 | 0.0% | Pending SHC_3BB0A8C1_0x00469860 | 0.0% | Pending -SHC_3BB0A8C1_0x00469870 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00469870 | 0.0% | Pending -SHC_3BB0A8C1_0x00469880 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00469880 | 0.0% | Pending -SHC_3BB0A8C1_0x004698A0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004698A0 | 0.0% | Pending -SHC_3BB0A8C1_0x004698C0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004698C0 | 0.0% | Pending -SHC_3BB0A8C1_0x004698D0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004698D0 | 0.0% | Pending SHC_3BB0A8C1_0x004698F0 | 0.0% | Pending @@ -20167,7 +20167,7 @@ SHC_3BB0A8C1_0x00469E70 | 0.0% | Pending SHC_3BB0A8C1_0x00469F10 | 0.0% | Pending -SHC_3BB0A8C1_0x00469F20 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00469F20 | 0.0% | Pending SHC_3BB0A8C1_0x00469F40 | 0.0% | Pending @@ -20695,7 +20695,7 @@ SHC_3BB0A8C1_0x0046A4C8 | 0.0% | Pending SHC_3BB0A8C1_0x0046A4D0 | 0.0% | Pending -SHC_3BB0A8C1_0x0046A720 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0046A720 | 0.0% | Pending SHC_3BB0A8C1_0x0046A740 | 100.0% | Reimplemented @@ -20743,11 +20743,11 @@ SHC_3BB0A8C1_0x0046B1B0 | 0.0% | Pending SHC_3BB0A8C1_0x0046B1F0 | 0.0% | Pending -SHC_3BB0A8C1_0x0046B2F0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0046B2F0 | 0.0% | Pending -SHC_3BB0A8C1_0x0046B300 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0046B300 | 0.0% | Pending -SHC_3BB0A8C1_0x0046B320 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0046B320 | 0.0% | Pending SHC_3BB0A8C1_0x0046B340 | 0.0% | Pending @@ -20893,7 +20893,7 @@ SHC_3BB0A8C1_0x0046BBD0 | 0.0% | Pending SHC_3BB0A8C1_0x0046BC90 | 0.0% | Pending -SHC_3BB0A8C1_0x0046BD20 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0046BD20 | 0.0% | Pending SHC_3BB0A8C1_0x0046BD50 | 0.0% | Pending @@ -20969,9 +20969,9 @@ SHC_3BB0A8C1_0x0046CEB0 | 0.0% | Pending SHC_3BB0A8C1_0x0046CEC0 | 0.0% | Pending -SHC_3BB0A8C1_0x0046CED0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0046CED0 | 0.0% | Pending -SHC_3BB0A8C1_0x0046CEF0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0046CEF0 | 0.0% | Pending SHC_3BB0A8C1_0x0046CF10 | 0.0% | Pending @@ -21201,7 +21201,7 @@ SHC_3BB0A8C1_0x0046F690 | 0.0% | Pending SHC_3BB0A8C1_0x0046F6B0 | 0.0% | Pending -SHC_3BB0A8C1_0x0046F730 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0046F730 | 0.0% | Pending SHC_3BB0A8C1_0x0046F750 | 0.0% | Pending @@ -21327,11 +21327,11 @@ SHC_3BB0A8C1_0x004718C0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004718F0 | 0.0% | Pending -SHC_3BB0A8C1_0x004719E0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004719E0 | 0.0% | Pending SHC_3BB0A8C1_0x00471A00 | 0.0% | Pending -SHC_3BB0A8C1_0x00471A80 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00471A80 | 0.0% | Pending SHC_3BB0A8C1_0x00471AA0 | 0.0% | Pending @@ -22307,7 +22307,7 @@ SHC_3BB0A8C1_0x0047D0D8 | 0.0% | Pending SHC_3BB0A8C1_0x0047D0DC | 0.0% | Pending -SHC_3BB0A8C1_0x0047D0E0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0047D0E0 | 0.0% | Pending SHC_3BB0A8C1_0x0047D100 | 0.0% | Pending @@ -22327,7 +22327,7 @@ SHC_3BB0A8C1_0x0047D3DC | 0.0% | Pending SHC_3BB0A8C1_0x0047D3E0 | 0.0% | Pending -SHC_3BB0A8C1_0x0047D3F0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0047D3F0 | 0.0% | Pending SHC_3BB0A8C1_0x0047D410 | 0.0% | Pending @@ -22373,9 +22373,9 @@ SHC_3BB0A8C1_0x0047E5B0 | 0.0% | Pending SHC_3BB0A8C1_0x0047E5D0 | 0.0% | Pending -SHC_3BB0A8C1_0x0047E7E0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0047E7E0 | 0.0% | Pending -SHC_3BB0A8C1_0x0047E800 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0047E800 | 0.0% | Pending SHC_3BB0A8C1_0x0047E830 | 0.0% | Pending @@ -22393,7 +22393,7 @@ SHC_3BB0A8C1_0x0047EC10 | 0.0% | Pending SHC_3BB0A8C1_0x0047EDE0 | 0.0% | Pending -SHC_3BB0A8C1_0x0047EEB0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0047EEB0 | 0.0% | Pending SHC_3BB0A8C1_0x0047EED0 | 0.0% | Pending @@ -22411,13 +22411,13 @@ SHC_3BB0A8C1_0x0047FD50 | 0.0% | Pending SHC_3BB0A8C1_0x0047FEA0 | 0.0% | Pending -SHC_3BB0A8C1_0x0047FFA0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0047FFA0 | 0.0% | Pending SHC_3BB0A8C1_0x0047FFE0 | 0.0% | Pending SHC_3BB0A8C1_0x00480050 | 0.0% | Pending -SHC_3BB0A8C1_0x004800B0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004800B0 | 0.0% | Pending SHC_3BB0A8C1_0x004800E0 | 0.0% | Pending @@ -22547,7 +22547,7 @@ SHC_3BB0A8C1_0x004821D5 | 0.0% | Pending SHC_3BB0A8C1_0x004821E0 | 0.0% | Pending -SHC_3BB0A8C1_0x00482280 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00482280 | 0.0% | Pending SHC_3BB0A8C1_0x00482290 | 0.0% | Pending @@ -23167,7 +23167,7 @@ SHC_3BB0A8C1_0x0048BD40 | 0.0% | Pending SHC_3BB0A8C1_0x0048BD80 | 0.0% | Pending -SHC_3BB0A8C1_0x0048BF70 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0048BF70 | 0.0% | Pending SHC_3BB0A8C1_0x0048BF80 | 0.0% | Pending @@ -23357,7 +23357,7 @@ SHC_3BB0A8C1_0x0048F841 | 0.0% | Pending SHC_3BB0A8C1_0x0048F842 | 0.0% | Pending -SHC_3BB0A8C1_0x0048F850 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0048F850 | 0.0% | Pending SHC_3BB0A8C1_0x0048F870 | 0.0% | Pending @@ -23373,7 +23373,7 @@ SHC_3BB0A8C1_0x00490060 | 0.0% | Pending SHC_3BB0A8C1_0x00490080 | 0.0% | Pending -SHC_3BB0A8C1_0x00490340 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00490340 | 0.0% | Pending SHC_3BB0A8C1_0x00490380 | 0.0% | Pending @@ -23407,13 +23407,13 @@ SHC_3BB0A8C1_0x00491680 | 0.0% | Pending SHC_3BB0A8C1_0x004916C0 | 0.0% | Pending -SHC_3BB0A8C1_0x00491730 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00491730 | 0.0% | Pending SHC_3BB0A8C1_0x00491750 | 0.0% | Pending SHC_3BB0A8C1_0x004917C0 | 0.0% | Pending -SHC_3BB0A8C1_0x00491810 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00491810 | 0.0% | Pending SHC_3BB0A8C1_0x00491840 | 0.0% | Pending @@ -23421,7 +23421,7 @@ SHC_3BB0A8C1_0x00491A30 | 0.0% | Pending SHC_3BB0A8C1_0x00491AC0 | 0.0% | Pending -SHC_3BB0A8C1_0x00491BF0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00491BF0 | 0.0% | Pending SHC_3BB0A8C1_0x00491C20 | 0.0% | Pending @@ -23431,7 +23431,7 @@ SHC_3BB0A8C1_0x00491CE0 | 0.0% | Pending SHC_3BB0A8C1_0x00491D70 | 0.0% | Pending -SHC_3BB0A8C1_0x00491E80 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00491E80 | 0.0% | Pending SHC_3BB0A8C1_0x00491EB0 | 0.0% | Pending @@ -23485,7 +23485,7 @@ SHC_3BB0A8C1_0x00492654 | 0.0% | Pending SHC_3BB0A8C1_0x00492658 | 0.0% | Pending -SHC_3BB0A8C1_0x00492660 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00492660 | 0.0% | Pending SHC_3BB0A8C1_0x00492690 | 0.0% | Pending @@ -23501,7 +23501,7 @@ SHC_3BB0A8C1_0x004929BC | 0.0% | Pending SHC_3BB0A8C1_0x004929C0 | 0.0% | Pending -SHC_3BB0A8C1_0x00492A60 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00492A60 | 0.0% | Pending SHC_3BB0A8C1_0x00492A90 | 0.0% | Pending @@ -23521,7 +23521,7 @@ SHC_3BB0A8C1_0x00492C58 | 0.0% | Pending SHC_3BB0A8C1_0x00492C5C | 0.0% | Pending -SHC_3BB0A8C1_0x00492C60 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00492C60 | 0.0% | Pending SHC_3BB0A8C1_0x00492C90 | 0.0% | Pending @@ -23629,7 +23629,7 @@ SHC_3BB0A8C1_0x00493690 | 0.0% | Pending SHC_3BB0A8C1_0x004937A4 | 0.0% | Pending -SHC_3BB0A8C1_0x004937B0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004937B0 | 0.0% | Pending SHC_3BB0A8C1_0x004937E0 | 0.0% | Pending @@ -24041,7 +24041,7 @@ SHC_3BB0A8C1_0x004941E7 | 0.0% | Pending SHC_3BB0A8C1_0x004941E8 | 0.0% | Pending -SHC_3BB0A8C1_0x004941F0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004941F0 | 0.0% | Pending SHC_3BB0A8C1_0x00494210 | 0.0% | Pending @@ -24111,7 +24111,7 @@ SHC_3BB0A8C1_0x004948BF | 0.0% | Pending SHC_3BB0A8C1_0x004948C0 | 0.0% | Pending -SHC_3BB0A8C1_0x00494920 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00494920 | 0.0% | Pending SHC_3BB0A8C1_0x00494950 | 0.0% | Pending @@ -24213,7 +24213,7 @@ SHC_3BB0A8C1_0x00495230 | 0.0% | Pending SHC_3BB0A8C1_0x004954A0 | 0.0% | Pending -SHC_3BB0A8C1_0x00495800 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00495800 | 0.0% | Pending SHC_3BB0A8C1_0x00495840 | 0.0% | Pending @@ -24345,11 +24345,11 @@ SHC_3BB0A8C1_0x00496E1A | 0.0% | Pending SHC_3BB0A8C1_0x00496E20 | 0.0% | Pending -SHC_3BB0A8C1_0x00496E30 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00496E30 | 0.0% | Pending SHC_3BB0A8C1_0x00496E40 | 0.0% | Pending -SHC_3BB0A8C1_0x00496EA0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00496EA0 | 0.0% | Pending SHC_3BB0A8C1_0x00496EC0 | 0.0% | Pending @@ -24417,7 +24417,7 @@ SHC_3BB0A8C1_0x0049AF50 | 0.0% | Pending SHC_3BB0A8C1_0x0049B000 | 0.0% | Pending -SHC_3BB0A8C1_0x0049B1C0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0049B1C0 | 0.0% | Pending SHC_3BB0A8C1_0x0049B1D0 | 0.0% | Pending @@ -25233,7 +25233,7 @@ SHC_3BB0A8C1_0x004A4930 | 0.0% | Pending SHC_3BB0A8C1_0x004A4B30 | 0.0% | Pending -SHC_3BB0A8C1_0x004A4B80 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004A4B80 | 0.0% | Pending SHC_3BB0A8C1_0x004A4BB0 | 0.0% | Pending @@ -25267,7 +25267,7 @@ SHC_3BB0A8C1_0x004A5B00 | 0.0% | Pending SHC_3BB0A8C1_0x004A5DA0 | 0.0% | Pending -SHC_3BB0A8C1_0x004A5F60 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004A5F60 | 0.0% | Pending SHC_3BB0A8C1_0x004A5F90 | 0.0% | Pending @@ -25455,7 +25455,7 @@ SHC_3BB0A8C1_0x004A91F7 | 0.0% | Pending SHC_3BB0A8C1_0x004A9200 | 0.0% | Pending -SHC_3BB0A8C1_0x004A94E0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004A94E0 | 0.0% | Pending SHC_3BB0A8C1_0x004A9510 | 0.0% | Pending @@ -25477,11 +25477,11 @@ SHC_3BB0A8C1_0x004A9E00 | 0.0% | Pending SHC_3BB0A8C1_0x004A9E60 | 0.0% | Pending -SHC_3BB0A8C1_0x004A9E80 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004A9E80 | 0.0% | Pending SHC_3BB0A8C1_0x004A9E90 | 0.0% | Pending -SHC_3BB0A8C1_0x004A9EB0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004A9EB0 | 0.0% | Pending SHC_3BB0A8C1_0x004A9ED0 | 0.0% | Pending @@ -25535,21 +25535,21 @@ SHC_3BB0A8C1_0x004AAB00 | 0.0% | Pending SHC_3BB0A8C1_0x004AAB20 | 0.0% | Pending -SHC_3BB0A8C1_0x004AAB40 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004AAB40 | 0.0% | Pending SHC_3BB0A8C1_0x004AAB50 | 0.0% | Pending -SHC_3BB0A8C1_0x004AB440 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004AB440 | 0.0% | Pending SHC_3BB0A8C1_0x004AB460 | 0.0% | Pending -SHC_3BB0A8C1_0x004AB4B0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004AB4B0 | 0.0% | Pending -SHC_3BB0A8C1_0x004AB4E0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004AB4E0 | 0.0% | Pending -SHC_3BB0A8C1_0x004AB510 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004AB510 | 0.0% | Pending -SHC_3BB0A8C1_0x004AB540 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004AB540 | 0.0% | Pending SHC_3BB0A8C1_0x004AB570 | 0.0% | Pending @@ -25619,17 +25619,17 @@ SHC_3BB0A8C1_0x004ABB91 | 0.0% | Pending SHC_3BB0A8C1_0x004ABBA0 | 0.0% | Pending -SHC_3BB0A8C1_0x004ABCB0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004ABCB0 | 0.0% | Pending -SHC_3BB0A8C1_0x004ABCE0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004ABCE0 | 0.0% | Pending SHC_3BB0A8C1_0x004ABD10 | 0.0% | Pending SHC_3BB0A8C1_0x004ABD20 | 0.0% | Pending -SHC_3BB0A8C1_0x004ABE50 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004ABE50 | 0.0% | Pending -SHC_3BB0A8C1_0x004ABE80 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004ABE80 | 0.0% | Pending SHC_3BB0A8C1_0x004ABEB0 | 0.0% | Pending @@ -25779,7 +25779,7 @@ SHC_3BB0A8C1_0x004AC24E | 0.0% | Pending SHC_3BB0A8C1_0x004AC24F | 0.0% | Pending -SHC_3BB0A8C1_0x004AC250 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004AC250 | 0.0% | Pending SHC_3BB0A8C1_0x004AC280 | 0.0% | Pending @@ -25903,19 +25903,19 @@ SHC_3BB0A8C1_0x004AF4C0 | 0.0% | Pending SHC_3BB0A8C1_0x004AF5E0 | 0.0% | Pending -SHC_3BB0A8C1_0x004AF630 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004AF630 | 0.0% | Pending -SHC_3BB0A8C1_0x004AF650 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004AF650 | 0.0% | Pending -SHC_3BB0A8C1_0x004AF680 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004AF680 | 0.0% | Pending -SHC_3BB0A8C1_0x004AF6B0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004AF6B0 | 0.0% | Pending -SHC_3BB0A8C1_0x004AF6E0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004AF6E0 | 0.0% | Pending SHC_3BB0A8C1_0x004AF700 | 0.0% | Pending -SHC_3BB0A8C1_0x004AF800 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004AF800 | 0.0% | Pending SHC_3BB0A8C1_0x004AF820 | 0.0% | Pending @@ -25967,7 +25967,7 @@ SHC_3BB0A8C1_0x004B0F70 | 0.0% | Pending SHC_3BB0A8C1_0x004B1000 | 0.0% | Pending -SHC_3BB0A8C1_0x004B1090 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004B1090 | 0.0% | Pending SHC_3BB0A8C1_0x004B10D0 | 0.0% | Pending @@ -26001,7 +26001,7 @@ SHC_3BB0A8C1_0x004B1E60 | 0.0% | Pending SHC_3BB0A8C1_0x004B1EB0 | 0.0% | Pending -SHC_3BB0A8C1_0x004B20B0 | 67.6% | Register alloc/tail merge diff +SHC_3BB0A8C1_0x004B20B0 | 0.0% | Pending SHC_3BB0A8C1_0x004B2280 | 0.0% | Pending @@ -26881,7 +26881,7 @@ SHC_3BB0A8C1_0x004B51A0 | 0.0% | Pending SHC_3BB0A8C1_0x004B5280 | 0.0% | Pending -SHC_3BB0A8C1_0x004B5300 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004B5300 | 0.0% | Pending SHC_3BB0A8C1_0x004B5330 | 0.0% | Pending @@ -26905,7 +26905,7 @@ SHC_3BB0A8C1_0x004B6480 | 0.0% | Pending SHC_3BB0A8C1_0x004B64D0 | 0.0% | Pending -SHC_3BB0A8C1_0x004B6500 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004B6500 | 0.0% | Pending SHC_3BB0A8C1_0x004B6530 | 0.0% | Pending @@ -26915,9 +26915,9 @@ SHC_3BB0A8C1_0x004B65A0 | 0.0% | Pending SHC_3BB0A8C1_0x004B65F0 | 0.0% | Pending -SHC_3BB0A8C1_0x004B6640 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004B6640 | 0.0% | Pending -SHC_3BB0A8C1_0x004B6680 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004B6680 | 0.0% | Pending SHC_3BB0A8C1_0x004B66C0 | 0.0% | Pending @@ -27077,11 +27077,11 @@ SHC_3BB0A8C1_0x004B7730 | 0.0% | Pending SHC_3BB0A8C1_0x004B77A0 | 0.0% | Pending -SHC_3BB0A8C1_0x004B77E0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004B77E0 | 0.0% | Pending SHC_3BB0A8C1_0x004B7800 | 0.0% | Pending -SHC_3BB0A8C1_0x004B7890 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004B7890 | 0.0% | Pending SHC_3BB0A8C1_0x004B78D0 | 0.0% | Pending @@ -27097,19 +27097,19 @@ SHC_3BB0A8C1_0x004B7AF0 | 0.0% | Pending SHC_3BB0A8C1_0x004B7C90 | 0.0% | Pending -SHC_3BB0A8C1_0x004B7F60 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004B7F60 | 0.0% | Pending SHC_3BB0A8C1_0x004B7FA0 | 0.0% | Pending SHC_3BB0A8C1_0x004B8000 | 0.0% | Pending -SHC_3BB0A8C1_0x004B8050 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004B8050 | 0.0% | Pending SHC_3BB0A8C1_0x004B8080 | 0.0% | Pending -SHC_3BB0A8C1_0x004B8200 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004B8200 | 0.0% | Pending -SHC_3BB0A8C1_0x004B8210 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004B8210 | 0.0% | Pending SHC_3BB0A8C1_0x004B8220 | 0.0% | Pending @@ -27639,7 +27639,7 @@ SHC_3BB0A8C1_0x004B9528 | 0.0% | Pending SHC_3BB0A8C1_0x004B9530 | 0.0% | Pending -SHC_3BB0A8C1_0x004B9610 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004B9610 | 0.0% | Pending SHC_3BB0A8C1_0x004B9620 | 0.0% | Pending @@ -29287,11 +29287,11 @@ SHC_3BB0A8C1_0x004BB52C | 0.0% | Pending SHC_3BB0A8C1_0x004BB530 | 0.0% | Pending -SHC_3BB0A8C1_0x004BB540 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004BB540 | 0.0% | Pending SHC_3BB0A8C1_0x004BB570 | 0.0% | Pending -SHC_3BB0A8C1_0x004BB650 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004BB650 | 0.0% | Pending SHC_3BB0A8C1_0x004BB680 | 0.0% | Pending @@ -29315,9 +29315,9 @@ SHC_3BB0A8C1_0x004BB900 | 0.0% | Pending SHC_3BB0A8C1_0x004BB990 | 0.0% | Pending -SHC_3BB0A8C1_0x004BB9F0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004BB9F0 | 0.0% | Pending -SHC_3BB0A8C1_0x004BBA20 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004BBA20 | 0.0% | Pending SHC_3BB0A8C1_0x004BBA30 | 0.0% | Pending @@ -30095,7 +30095,7 @@ SHC_3BB0A8C1_0x004BC6C0 | 0.0% | Pending SHC_3BB0A8C1_0x004BC6F0 | 0.0% | Pending -SHC_3BB0A8C1_0x004BC770 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004BC770 | 0.0% | Pending SHC_3BB0A8C1_0x004BC790 | 0.0% | Pending @@ -30491,7 +30491,7 @@ SHC_3BB0A8C1_0x004BEA90 | 0.0% | Pending SHC_3BB0A8C1_0x004BEB20 | 0.0% | Pending -SHC_3BB0A8C1_0x004BEC10 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004BEC10 | 0.0% | Pending SHC_3BB0A8C1_0x004BEC40 | 0.0% | Pending @@ -34139,7 +34139,7 @@ SHC_3BB0A8C1_0x004C6294 | 0.0% | Pending SHC_3BB0A8C1_0x004C6298 | 0.0% | Pending -SHC_3BB0A8C1_0x004C62A0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004C62A0 | 0.0% | Pending SHC_3BB0A8C1_0x004C62C0 | 0.0% | Pending @@ -35833,7 +35833,7 @@ SHC_3BB0A8C1_0x004D6D14 | 0.0% | Pending SHC_3BB0A8C1_0x004D6D20 | 0.0% | Pending -SHC_3BB0A8C1_0x004D6EF0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004D6EF0 | 0.0% | Pending SHC_3BB0A8C1_0x004D6F20 | 0.0% | Pending @@ -36053,9 +36053,9 @@ SHC_3BB0A8C1_0x004D9C10 | 0.0% | Pending SHC_3BB0A8C1_0x004D9CC0 | 0.0% | Pending -SHC_3BB0A8C1_0x004D9D60 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004D9D60 | 0.0% | Pending -SHC_3BB0A8C1_0x004D9D90 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004D9D90 | 0.0% | Pending SHC_3BB0A8C1_0x004D9DB0 | 0.0% | Pending @@ -36145,15 +36145,15 @@ SHC_3BB0A8C1_0x004DA750 | 0.0% | Pending SHC_3BB0A8C1_0x004DA7A0 | 0.0% | Pending -SHC_3BB0A8C1_0x004DA7E0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004DA7E0 | 0.0% | Pending -SHC_3BB0A8C1_0x004DA810 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004DA810 | 0.0% | Pending -SHC_3BB0A8C1_0x004DA840 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004DA840 | 0.0% | Pending -SHC_3BB0A8C1_0x004DA870 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004DA870 | 0.0% | Pending -SHC_3BB0A8C1_0x004DA8A0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004DA8A0 | 0.0% | Pending SHC_3BB0A8C1_0x004DA8D0 | 0.0% | Pending @@ -36171,7 +36171,7 @@ SHC_3BB0A8C1_0x004DAB80 | 0.0% | Pending SHC_3BB0A8C1_0x004DABB0 | 0.0% | Pending -SHC_3BB0A8C1_0x004DABF0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004DABF0 | 0.0% | Pending SHC_3BB0A8C1_0x004DAC30 | 0.0% | Pending @@ -36257,7 +36257,7 @@ SHC_3BB0A8C1_0x004DC500 | 0.0% | Pending SHC_3BB0A8C1_0x004DC9E0 | 0.0% | Pending -SHC_3BB0A8C1_0x004DCC70 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004DCC70 | 0.0% | Pending SHC_3BB0A8C1_0x004DCC90 | 0.0% | Pending @@ -36985,7 +36985,7 @@ SHC_3BB0A8C1_0x004E66F0 | 0.0% | Pending SHC_3BB0A8C1_0x004E7770 | 0.0% | Pending -SHC_3BB0A8C1_0x004E7800 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004E7800 | 0.0% | Pending SHC_3BB0A8C1_0x004E7810 | 0.0% | Pending @@ -37335,9 +37335,9 @@ SHC_3BB0A8C1_0x004E8C4C | 0.0% | Pending SHC_3BB0A8C1_0x004E8C50 | 0.0% | Pending -SHC_3BB0A8C1_0x004E8C90 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004E8C90 | 0.0% | Pending -SHC_3BB0A8C1_0x004E8CA0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004E8CA0 | 0.0% | Pending SHC_3BB0A8C1_0x004E8CC0 | 0.0% | Pending @@ -37933,7 +37933,7 @@ SHC_3BB0A8C1_0x004ED3B0 | 0.0% | Pending SHC_3BB0A8C1_0x004ED410 | 0.0% | Pending -SHC_3BB0A8C1_0x004EDC90 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004EDC90 | 0.0% | Pending SHC_3BB0A8C1_0x004EDCB0 | 0.0% | Pending @@ -38463,7 +38463,7 @@ SHC_3BB0A8C1_0x004F28E4 | 0.0% | Pending SHC_3BB0A8C1_0x004F28E8 | 0.0% | Pending -SHC_3BB0A8C1_0x004F28F0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004F28F0 | 0.0% | Pending SHC_3BB0A8C1_0x004F2920 | 0.0% | Pending @@ -38563,7 +38563,7 @@ SHC_3BB0A8C1_0x004F2E90 | 0.0% | Pending SHC_3BB0A8C1_0x004F2FB0 | 0.0% | Pending -SHC_3BB0A8C1_0x004F2FE0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004F2FE0 | 0.0% | Pending SHC_3BB0A8C1_0x004F3010 | 0.0% | Pending @@ -38589,7 +38589,7 @@ SHC_3BB0A8C1_0x004F3840 | 0.0% | Pending SHC_3BB0A8C1_0x004F38A0 | 0.0% | Pending -SHC_3BB0A8C1_0x004F3900 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004F3900 | 0.0% | Pending SHC_3BB0A8C1_0x004F3930 | 0.0% | Pending @@ -38599,7 +38599,7 @@ SHC_3BB0A8C1_0x004F3B90 | 0.0% | Pending SHC_3BB0A8C1_0x004F3C50 | 0.0% | Pending -SHC_3BB0A8C1_0x004F3D30 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004F3D30 | 0.0% | Pending SHC_3BB0A8C1_0x004F3D60 | 0.0% | Pending @@ -38633,9 +38633,9 @@ SHC_3BB0A8C1_0x004F4290 | 0.0% | Pending SHC_3BB0A8C1_0x004F49D0 | 0.0% | Pending -SHC_3BB0A8C1_0x004F4C30 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004F4C30 | 0.0% | Pending -SHC_3BB0A8C1_0x004F4C60 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004F4C60 | 0.0% | Pending SHC_3BB0A8C1_0x004F4C80 | 0.0% | Pending @@ -38697,7 +38697,7 @@ SHC_3BB0A8C1_0x004F6460 | 0.0% | Pending SHC_3BB0A8C1_0x004F6464 | 0.0% | Pending -SHC_3BB0A8C1_0x004F6470 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004F6470 | 0.0% | Pending SHC_3BB0A8C1_0x004F64A0 | 0.0% | Pending @@ -38733,9 +38733,9 @@ SHC_3BB0A8C1_0x004F69D0 | 0.0% | Pending SHC_3BB0A8C1_0x004F6A20 | 0.0% | Pending -SHC_3BB0A8C1_0x004F6A60 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004F6A60 | 0.0% | Pending -SHC_3BB0A8C1_0x004F6A70 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004F6A70 | 0.0% | Pending SHC_3BB0A8C1_0x004F6A80 | 0.0% | Pending @@ -38755,11 +38755,11 @@ SHC_3BB0A8C1_0x004F6F90 | 0.0% | Pending SHC_3BB0A8C1_0x004F6FD0 | 0.0% | Pending -SHC_3BB0A8C1_0x004F70B0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004F70B0 | 0.0% | Pending SHC_3BB0A8C1_0x004F70D0 | 0.0% | Pending -SHC_3BB0A8C1_0x004F70E0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x004F70E0 | 0.0% | Pending SHC_3BB0A8C1_0x004F70F0 | 0.0% | Pending @@ -41419,13 +41419,13 @@ SHC_3BB0A8C1_0x00500090 | 0.0% | Pending SHC_3BB0A8C1_0x00500091 | 0.0% | Pending -SHC_3BB0A8C1_0x005000A0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x005000A0 | 0.0% | Pending SHC_3BB0A8C1_0x005000E0 | 0.0% | Pending SHC_3BB0A8C1_0x00500180 | 0.0% | Pending -SHC_3BB0A8C1_0x00500210 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00500210 | 0.0% | Pending SHC_3BB0A8C1_0x00500250 | 0.0% | Pending @@ -41443,19 +41443,19 @@ SHC_3BB0A8C1_0x00500500 | 0.0% | Pending SHC_3BB0A8C1_0x005005F0 | 0.0% | Pending -SHC_3BB0A8C1_0x00500640 | 46.1% | LTCG ecx reuse after call +SHC_3BB0A8C1_0x00500640 | 0.0% | Pending -SHC_3BB0A8C1_0x00500680 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00500680 | 0.0% | Pending SHC_3BB0A8C1_0x005006C0 | 0.0% | Pending -SHC_3BB0A8C1_0x00500720 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00500720 | 0.0% | Pending -SHC_3BB0A8C1_0x00500750 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00500750 | 0.0% | Pending SHC_3BB0A8C1_0x00500790 | 0.0% | Pending -SHC_3BB0A8C1_0x005007D0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x005007D0 | 0.0% | Pending SHC_3BB0A8C1_0x00500800 | 0.0% | Pending @@ -41473,13 +41473,13 @@ SHC_3BB0A8C1_0x00500BB0 | 0.0% | Pending SHC_3BB0A8C1_0x00500C20 | 0.0% | Pending -SHC_3BB0A8C1_0x00500C80 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00500C80 | 0.0% | Pending SHC_3BB0A8C1_0x00500CB0 | 0.0% | Pending SHC_3BB0A8C1_0x00500CF0 | 0.0% | Pending -SHC_3BB0A8C1_0x00500D30 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00500D30 | 0.0% | Pending SHC_3BB0A8C1_0x00500D60 | 0.0% | Pending @@ -41503,19 +41503,19 @@ SHC_3BB0A8C1_0x005010B8 | 0.0% | Pending SHC_3BB0A8C1_0x005010BC | 0.0% | Pending -SHC_3BB0A8C1_0x005010C0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x005010C0 | 0.0% | Pending SHC_3BB0A8C1_0x005010D0 | 0.0% | Pending -SHC_3BB0A8C1_0x005010E0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x005010E0 | 0.0% | Pending SHC_3BB0A8C1_0x00501110 | 0.0% | Pending -SHC_3BB0A8C1_0x00501180 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00501180 | 0.0% | Pending SHC_3BB0A8C1_0x005011A0 | 0.0% | Pending -SHC_3BB0A8C1_0x005011C0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x005011C0 | 0.0% | Pending SHC_3BB0A8C1_0x005011F0 | 0.0% | Pending @@ -41535,7 +41535,7 @@ SHC_3BB0A8C1_0x005016D0 | 0.0% | Pending SHC_3BB0A8C1_0x005016E0 | 0.0% | Pending -SHC_3BB0A8C1_0x00501730 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00501730 | 0.0% | Pending SHC_3BB0A8C1_0x00501760 | 0.0% | Pending @@ -42067,7 +42067,7 @@ SHC_3BB0A8C1_0x00504ED0 | 0.0% | Pending SHC_3BB0A8C1_0x00504ED1 | 0.0% | Pending -SHC_3BB0A8C1_0x00504EE0 | 38.5% | LTCG ecx reuse after call +SHC_3BB0A8C1_0x00504EE0 | 0.0% | Pending SHC_3BB0A8C1_0x00504F10 | 0.0% | Pending @@ -44739,7 +44739,7 @@ SHC_3BB0A8C1_0x005127B0 | 0.0% | Pending SHC_3BB0A8C1_0x005127D0 | 0.0% | Pending -SHC_3BB0A8C1_0x00512920 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00512920 | 0.0% | Pending SHC_3BB0A8C1_0x00512940 | 0.0% | Pending @@ -45773,7 +45773,7 @@ SHC_3BB0A8C1_0x00519850 | 0.0% | Pending SHC_3BB0A8C1_0x005198C0 | 0.0% | Pending -SHC_3BB0A8C1_0x00519960 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00519960 | 0.0% | Pending SHC_3BB0A8C1_0x00519990 | 0.0% | Pending @@ -45839,7 +45839,7 @@ SHC_3BB0A8C1_0x0051AB60 | 0.0% | Pending SHC_3BB0A8C1_0x0051ABB0 | 0.0% | Pending -SHC_3BB0A8C1_0x0051AC80 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0051AC80 | 0.0% | Pending SHC_3BB0A8C1_0x0051ACB0 | 0.0% | Pending @@ -45879,7 +45879,7 @@ SHC_3BB0A8C1_0x0051B420 | 0.0% | Pending SHC_3BB0A8C1_0x0051B570 | 0.0% | Pending -SHC_3BB0A8C1_0x0051B680 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0051B680 | 0.0% | Pending SHC_3BB0A8C1_0x0051B690 | 0.0% | Pending @@ -46161,7 +46161,7 @@ SHC_3BB0A8C1_0x0051D5D0 | 0.0% | Pending SHC_3BB0A8C1_0x0051D5E0 | 0.0% | Pending -SHC_3BB0A8C1_0x0051D680 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0051D680 | 0.0% | Pending SHC_3BB0A8C1_0x0051D690 | 0.0% | Pending @@ -46383,7 +46383,7 @@ SHC_3BB0A8C1_0x00521180 | 0.0% | Pending SHC_3BB0A8C1_0x005211B0 | 0.0% | Pending -SHC_3BB0A8C1_0x00521210 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00521210 | 0.0% | Pending SHC_3BB0A8C1_0x00521240 | 0.0% | Pending @@ -46633,7 +46633,7 @@ SHC_3BB0A8C1_0x00521EA5 | 0.0% | Pending SHC_3BB0A8C1_0x00521EA6 | 0.0% | Pending -SHC_3BB0A8C1_0x00521EB0 | 76.5% | pop esi scheduling +SHC_3BB0A8C1_0x00521EB0 | 0.0% | Pending SHC_3BB0A8C1_0x00521EF0 | 0.0% | Pending @@ -46765,11 +46765,11 @@ SHC_3BB0A8C1_0x00522083 | 0.0% | Pending SHC_3BB0A8C1_0x00522090 | 0.0% | Pending -SHC_3BB0A8C1_0x00522110 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00522110 | 0.0% | Pending -SHC_3BB0A8C1_0x00522150 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00522150 | 0.0% | Pending -SHC_3BB0A8C1_0x00522160 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00522160 | 0.0% | Pending SHC_3BB0A8C1_0x005221A0 | 0.0% | Pending @@ -46785,7 +46785,7 @@ SHC_3BB0A8C1_0x00522390 | 0.0% | Pending SHC_3BB0A8C1_0x00522410 | 0.0% | Pending -SHC_3BB0A8C1_0x005224E0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x005224E0 | 0.0% | Pending SHC_3BB0A8C1_0x00522520 | 0.0% | Pending @@ -46807,9 +46807,9 @@ SHC_3BB0A8C1_0x005229C0 | 0.0% | Pending SHC_3BB0A8C1_0x00522B00 | 0.0% | Pending -SHC_3BB0A8C1_0x00522BC0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00522BC0 | 0.0% | Pending -SHC_3BB0A8C1_0x00522BF0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00522BF0 | 0.0% | Pending SHC_3BB0A8C1_0x00522C20 | 0.0% | Pending @@ -46835,7 +46835,7 @@ SHC_3BB0A8C1_0x005232F0 | 0.0% | Pending SHC_3BB0A8C1_0x00523340 | 0.0% | Pending -SHC_3BB0A8C1_0x00523370 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00523370 | 0.0% | Pending SHC_3BB0A8C1_0x005233A0 | 0.0% | Pending @@ -46851,7 +46851,7 @@ SHC_3BB0A8C1_0x00523630 | 0.0% | Pending SHC_3BB0A8C1_0x005236A0 | 0.0% | Pending -SHC_3BB0A8C1_0x00523730 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00523730 | 0.0% | Pending SHC_3BB0A8C1_0x00523750 | 0.0% | Pending @@ -46865,11 +46865,11 @@ SHC_3BB0A8C1_0x00523A30 | 0.0% | Pending SHC_3BB0A8C1_0x00523B00 | 0.0% | Pending -SHC_3BB0A8C1_0x00523E00 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00523E00 | 0.0% | Pending SHC_3BB0A8C1_0x00523E30 | 0.0% | Pending -SHC_3BB0A8C1_0x00523EB0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00523EB0 | 0.0% | Pending SHC_3BB0A8C1_0x00523EF0 | 0.0% | Pending @@ -46917,7 +46917,7 @@ SHC_3BB0A8C1_0x00524EF0 | 0.0% | Pending SHC_3BB0A8C1_0x00525060 | 0.0% | Pending -SHC_3BB0A8C1_0x00525090 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00525090 | 0.0% | Pending SHC_3BB0A8C1_0x005250B0 | 0.0% | Pending @@ -46947,7 +46947,7 @@ SHC_3BB0A8C1_0x00525970 | 0.0% | Pending SHC_3BB0A8C1_0x00525A70 | 0.0% | Pending -SHC_3BB0A8C1_0x00525B70 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00525B70 | 0.0% | Pending SHC_3BB0A8C1_0x00525BA0 | 0.0% | Pending @@ -46959,7 +46959,7 @@ SHC_3BB0A8C1_0x005261B0 | 0.0% | Pending SHC_3BB0A8C1_0x005262A0 | 0.0% | Pending -SHC_3BB0A8C1_0x00526370 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00526370 | 0.0% | Pending SHC_3BB0A8C1_0x005263A0 | 0.0% | Pending @@ -49233,7 +49233,7 @@ SHC_3BB0A8C1_0x0052B9E4 | 0.0% | Pending SHC_3BB0A8C1_0x0052B9E8 | 0.0% | Pending -SHC_3BB0A8C1_0x0052B9F0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0052B9F0 | 0.0% | Pending SHC_3BB0A8C1_0x0052BA10 | 0.0% | Pending @@ -49345,9 +49345,9 @@ SHC_3BB0A8C1_0x0052F730 | 0.0% | Pending SHC_3BB0A8C1_0x0052F7E0 | 0.0% | Pending -SHC_3BB0A8C1_0x0052FBB0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0052FBB0 | 0.0% | Pending -SHC_3BB0A8C1_0x0052FBF0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0052FBF0 | 0.0% | Pending SHC_3BB0A8C1_0x0052FC30 | 0.0% | Pending @@ -49361,7 +49361,7 @@ SHC_3BB0A8C1_0x0052FE90 | 0.0% | Pending SHC_3BB0A8C1_0x0052FF80 | 0.0% | Pending -SHC_3BB0A8C1_0x00530080 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00530080 | 0.0% | Pending SHC_3BB0A8C1_0x005300B0 | 0.0% | Pending @@ -49649,7 +49649,7 @@ SHC_3BB0A8C1_0x00530C40 | 0.0% | Pending SHC_3BB0A8C1_0x00530CF0 | 0.0% | Pending -SHC_3BB0A8C1_0x00530D50 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00530D50 | 0.0% | Pending SHC_3BB0A8C1_0x00530D70 | 0.0% | Pending @@ -49659,7 +49659,7 @@ SHC_3BB0A8C1_0x00530EB0 | 0.0% | Pending SHC_3BB0A8C1_0x00530F20 | 0.0% | Pending -SHC_3BB0A8C1_0x00530FD0 | 78.3% | Range check compiled branchles +SHC_3BB0A8C1_0x00530FD0 | 0.0% | Pending SHC_3BB0A8C1_0x00531000 | 0.0% | Pending @@ -50643,7 +50643,7 @@ SHC_3BB0A8C1_0x00532F5D | 0.0% | Pending SHC_3BB0A8C1_0x00532F5E | 0.0% | Pending -SHC_3BB0A8C1_0x00532F60 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00532F60 | 0.0% | Pending SHC_3BB0A8C1_0x00532F80 | 0.0% | Pending @@ -50683,13 +50683,13 @@ SHC_3BB0A8C1_0x00533960 | 0.0% | Pending SHC_3BB0A8C1_0x005339A0 | 0.0% | Pending -SHC_3BB0A8C1_0x005339F0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x005339F0 | 0.0% | Pending SHC_3BB0A8C1_0x00533A10 | 0.0% | Pending SHC_3BB0A8C1_0x00533B30 | 0.0% | Pending -SHC_3BB0A8C1_0x00533C70 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00533C70 | 0.0% | Pending SHC_3BB0A8C1_0x00533CA0 | 0.0% | Pending @@ -50777,7 +50777,7 @@ SHC_3BB0A8C1_0x00533F84 | 0.0% | Pending SHC_3BB0A8C1_0x00533F85 | 0.0% | Pending -SHC_3BB0A8C1_0x00533F90 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00533F90 | 0.0% | Pending SHC_3BB0A8C1_0x00533FC0 | 0.0% | Pending @@ -50809,7 +50809,7 @@ SHC_3BB0A8C1_0x005343C0 | 0.0% | Pending SHC_3BB0A8C1_0x005343F0 | 0.0% | Pending -SHC_3BB0A8C1_0x00534460 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00534460 | 0.0% | Pending SHC_3BB0A8C1_0x00534490 | 0.0% | Pending @@ -51067,9 +51067,9 @@ SHC_3BB0A8C1_0x00535514 | 0.0% | Pending SHC_3BB0A8C1_0x00535520 | 0.0% | Pending -SHC_3BB0A8C1_0x00535550 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00535550 | 0.0% | Pending -SHC_3BB0A8C1_0x00535560 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00535560 | 0.0% | Pending SHC_3BB0A8C1_0x00535580 | 0.0% | Pending @@ -51103,7 +51103,7 @@ SHC_3BB0A8C1_0x00535B00 | 0.0% | Pending SHC_3BB0A8C1_0x00535BC0 | 0.0% | Pending -SHC_3BB0A8C1_0x00535DF0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00535DF0 | 0.0% | Pending SHC_3BB0A8C1_0x00535E20 | 0.0% | Pending @@ -51207,7 +51207,7 @@ SHC_3BB0A8C1_0x00536C70 | 0.0% | Pending SHC_3BB0A8C1_0x00536C90 | 0.0% | Pending -SHC_3BB0A8C1_0x00536CC0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x00536CC0 | 0.0% | Pending SHC_3BB0A8C1_0x00536CF0 | 0.0% | Pending @@ -51231,7 +51231,7 @@ SHC_3BB0A8C1_0x00537160 | 0.0% | Pending SHC_3BB0A8C1_0x005371A0 | 0.0% | Pending -SHC_3BB0A8C1_0x005371E0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x005371E0 | 0.0% | Pending SHC_3BB0A8C1_0x005371F0 | 0.0% | Pending @@ -59625,9 +59625,9 @@ SHC_3BB0A8C1_0x0053B210 | 0.0% | Pending SHC_3BB0A8C1_0x0053B260 | 0.0% | Pending -SHC_3BB0A8C1_0x0053B310 | 90.0% | Global store scheduling +SHC_3BB0A8C1_0x0053B310 | 0.0% | Pending -SHC_3BB0A8C1_0x0053B340 | 53.3% | Loop unrolled x3, orig not +SHC_3BB0A8C1_0x0053B340 | 0.0% | Pending SHC_3BB0A8C1_0x0053B380 | 0.0% | Pending @@ -59637,13 +59637,13 @@ SHC_3BB0A8C1_0x0053B3E0 | 0.0% | Pending SHC_3BB0A8C1_0x0053B4F0 | 0.0% | Pending -SHC_3BB0A8C1_0x0053B530 | 92.3% | Global store scheduling +SHC_3BB0A8C1_0x0053B530 | 0.0% | Pending -SHC_3BB0A8C1_0x0053B570 | 90.0% | Global store scheduling +SHC_3BB0A8C1_0x0053B570 | 0.0% | Pending SHC_3BB0A8C1_0x0053B5A0 | 0.0% | Pending -SHC_3BB0A8C1_0x0053B5E0 | 90.0% | Global store scheduling +SHC_3BB0A8C1_0x0053B5E0 | 0.0% | Pending SHC_3BB0A8C1_0x0053B610 | 0.0% | Pending @@ -59669,7 +59669,7 @@ SHC_3BB0A8C1_0x0053C400 | 0.0% | Pending SHC_3BB0A8C1_0x0053C590 | 0.0% | Pending -SHC_3BB0A8C1_0x0053CAC0 | 100.0% | Reimplemented +SHC_3BB0A8C1_0x0053CAC0 | 0.0% | Pending SHC_3BB0A8C1_0x0053CAE0 | 0.0% | Pending From 981967628b03e7ca2a1a273fa8595aa809d311c7 Mon Sep 17 00:00:00 2001 From: sourcehold Date: Mon, 28 Sep 2026 22:25:41 +0200 Subject: [PATCH 223/241] sync with main --- ...uctTroopValueState.cpp => Constructor_TroopValueState.cpp} | 2 +- src/OpenSHC/Map/Units/UnitsState/returnFalseStub.cpp | 2 +- src/OpenSHC/Map/Version/UpgradeBuildingField2.cpp | 4 ++-- src/OpenSHC/Map/Version/UpgradeBuildingField4.cpp | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) rename src/OpenSHC/Map/Units/TroopValueState/{constructTroopValueState.cpp => Constructor_TroopValueState.cpp} (83%) diff --git a/src/OpenSHC/Map/Units/TroopValueState/constructTroopValueState.cpp b/src/OpenSHC/Map/Units/TroopValueState/Constructor_TroopValueState.cpp similarity index 83% rename from src/OpenSHC/Map/Units/TroopValueState/constructTroopValueState.cpp rename to src/OpenSHC/Map/Units/TroopValueState/Constructor_TroopValueState.cpp index acfc2761c..643d39b8a 100644 --- a/src/OpenSHC/Map/Units/TroopValueState/constructTroopValueState.cpp +++ b/src/OpenSHC/Map/Units/TroopValueState/Constructor_TroopValueState.cpp @@ -7,7 +7,7 @@ namespace Map { using OpenSHC::Map::Units::TroopValueState; // FUNCTION: STRONGHOLDCRUSADER 0x0051D680 - TroopValueState* TroopValueState::constructTroopValueState() + TroopValueState* TroopValueState::Constructor_TroopValueState() { MACRO_CALL_MEMBER(OpenSHC::Map::Units::TroopValueState_Func::clearAttackInfo, this)(); return this; diff --git a/src/OpenSHC/Map/Units/UnitsState/returnFalseStub.cpp b/src/OpenSHC/Map/Units/UnitsState/returnFalseStub.cpp index fdde7765a..574639d12 100644 --- a/src/OpenSHC/Map/Units/UnitsState/returnFalseStub.cpp +++ b/src/OpenSHC/Map/Units/UnitsState/returnFalseStub.cpp @@ -9,7 +9,7 @@ namespace Map { using OpenSHC::WindowsHelper::Enums::BOOLEnum; // FUNCTION: STRONGHOLDCRUSADER 0x00533090 - BOOLEnum UnitsState::returnFalseStub() { return FALSE; } + BOOLEnum UnitsState::returnFalseStub(int unitID) { return FALSE; } } } diff --git a/src/OpenSHC/Map/Version/UpgradeBuildingField2.cpp b/src/OpenSHC/Map/Version/UpgradeBuildingField2.cpp index aac4587ba..85f2845de 100644 --- a/src/OpenSHC/Map/Version/UpgradeBuildingField2.cpp +++ b/src/OpenSHC/Map/Version/UpgradeBuildingField2.cpp @@ -15,8 +15,8 @@ namespace Map { { for (int buildingID = 1; buildingID < 2000; ++buildingID) { if (DAT_BuildingsState::instance.buildings[buildingID].logicalState != (BuildingLogicalState)0) { - DAT_BuildingsState::instance.buildings[buildingID].field206_0x288 = 0; - DAT_BuildingsState::instance.buildings[buildingID].field188_0x264 = 0; + DAT_BuildingsState::instance.buildings[buildingID].field203_0x288 = 0; + DAT_BuildingsState::instance.buildings[buildingID].field185_0x264 = 0; } } } diff --git a/src/OpenSHC/Map/Version/UpgradeBuildingField4.cpp b/src/OpenSHC/Map/Version/UpgradeBuildingField4.cpp index 674418cb3..fd84d62cd 100644 --- a/src/OpenSHC/Map/Version/UpgradeBuildingField4.cpp +++ b/src/OpenSHC/Map/Version/UpgradeBuildingField4.cpp @@ -15,7 +15,7 @@ namespace Map { { for (int buildingID = 1; buildingID < 2000; ++buildingID) { if (DAT_BuildingsState::instance.buildings[buildingID].logicalState != (BuildingLogicalState)0) { - DAT_BuildingsState::instance.buildings[buildingID].field244_0x2c6 = 0; + DAT_BuildingsState::instance.buildings[buildingID].field241_0x2c6 = 0; } } } From 329b629c1e7c9af5e08d8953349b5acff0c6ad73 Mon Sep 17 00:00:00 2001 From: sourcehold Date: Mon, 28 Sep 2026 22:29:06 +0200 Subject: [PATCH 224/241] reset status file to proper progress --- status/addresses-SHC-3BB0A8C1.txt | 700 +++++++++++++++--------------- 1 file changed, 350 insertions(+), 350 deletions(-) diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index b80b8635f..96be0a28a 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -381,15 +381,15 @@ SHC_3BB0A8C1_0x00400260 | 0.0% | Pending SHC_3BB0A8C1_0x00400288 | 0.0% | Pending -SHC_3BB0A8C1_0x00401000 | 0.0% | Pending +SHC_3BB0A8C1_0x00401000 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00401040 | 0.0% | Pending +SHC_3BB0A8C1_0x00401040 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00401060 | 0.0% | Pending +SHC_3BB0A8C1_0x00401060 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00401090 | 0.0% | Pending +SHC_3BB0A8C1_0x00401090 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004010B0 | 0.0% | Pending +SHC_3BB0A8C1_0x004010B0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004010E0 | 0.0% | Pending @@ -415,13 +415,13 @@ SHC_3BB0A8C1_0x004012F0 | 0.0% | Pending SHC_3BB0A8C1_0x00401380 | 0.0% | Pending -SHC_3BB0A8C1_0x00401400 | 0.0% | Pending +SHC_3BB0A8C1_0x00401400 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00401430 | 0.0% | Pending +SHC_3BB0A8C1_0x00401430 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00401460 | 0.0% | Pending -SHC_3BB0A8C1_0x00401540 | 0.0% | Pending +SHC_3BB0A8C1_0x00401540 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00401570 | 0.0% | Pending @@ -445,11 +445,11 @@ SHC_3BB0A8C1_0x004019D0 | 0.0% | Pending SHC_3BB0A8C1_0x00401A50 | 0.0% | Pending -SHC_3BB0A8C1_0x00401AE0 | 0.0% | Pending +SHC_3BB0A8C1_0x00401AE0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00401B20 | 0.0% | Pending -SHC_3BB0A8C1_0x00401B60 | 0.0% | Pending +SHC_3BB0A8C1_0x00401B60 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00401BA0 | 0.0% | Pending @@ -503,7 +503,7 @@ SHC_3BB0A8C1_0x00402A18 | 0.0% | Pending SHC_3BB0A8C1_0x00402A20 | 0.0% | Pending -SHC_3BB0A8C1_0x00402AB0 | 0.0% | Pending +SHC_3BB0A8C1_0x00402AB0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00402AE0 | 0.0% | Pending @@ -531,7 +531,7 @@ SHC_3BB0A8C1_0x004036F0 | 0.0% | Pending SHC_3BB0A8C1_0x00403790 | 0.0% | Pending -SHC_3BB0A8C1_0x004038A0 | 0.0% | Pending +SHC_3BB0A8C1_0x004038A0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004038B0 | 0.0% | Pending @@ -539,9 +539,9 @@ SHC_3BB0A8C1_0x00403900 | 0.0% | Pending SHC_3BB0A8C1_0x00403980 | 0.0% | Pending -SHC_3BB0A8C1_0x004039B0 | 0.0% | Pending +SHC_3BB0A8C1_0x004039B0 | 36.4% | instruction selection differs -SHC_3BB0A8C1_0x004039F0 | 0.0% | Pending +SHC_3BB0A8C1_0x004039F0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00403A20 | 0.0% | Pending @@ -2347,9 +2347,9 @@ SHC_3BB0A8C1_0x00406900 | 0.0% | Pending SHC_3BB0A8C1_0x00406FD0 | 0.0% | Pending -SHC_3BB0A8C1_0x00407130 | 0.0% | Pending +SHC_3BB0A8C1_0x00407130 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00407160 | 0.0% | Pending +SHC_3BB0A8C1_0x00407160 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00407190 | 0.0% | Pending @@ -2597,11 +2597,11 @@ SHC_3BB0A8C1_0x00409200 | 0.0% | Pending SHC_3BB0A8C1_0x004092B0 | 0.0% | Pending -SHC_3BB0A8C1_0x004092C0 | 0.0% | Pending +SHC_3BB0A8C1_0x004092C0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004092E0 | 0.0% | Pending +SHC_3BB0A8C1_0x004092E0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00409300 | 0.0% | Pending +SHC_3BB0A8C1_0x00409300 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00409330 | 0.0% | Pending @@ -5543,15 +5543,15 @@ SHC_3BB0A8C1_0x00417B90 | 0.0% | Pending SHC_3BB0A8C1_0x00417FD0 | 0.0% | Pending -SHC_3BB0A8C1_0x004180E0 | 0.0% | Pending +SHC_3BB0A8C1_0x004180E0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00418100 | 0.0% | Pending -SHC_3BB0A8C1_0x004184A0 | 0.0% | Pending +SHC_3BB0A8C1_0x004184A0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004184D0 | 0.0% | Pending +SHC_3BB0A8C1_0x004184D0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00418500 | 0.0% | Pending +SHC_3BB0A8C1_0x00418500 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00418530 | 0.0% | Pending @@ -5559,9 +5559,9 @@ SHC_3BB0A8C1_0x00418640 | 0.0% | Pending SHC_3BB0A8C1_0x00418740 | 0.0% | Pending -SHC_3BB0A8C1_0x00418880 | 0.0% | Pending +SHC_3BB0A8C1_0x00418880 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004188C0 | 0.0% | Pending +SHC_3BB0A8C1_0x004188C0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00418900 | 0.0% | Pending @@ -5575,7 +5575,7 @@ SHC_3BB0A8C1_0x00418C80 | 0.0% | Pending SHC_3BB0A8C1_0x00418EC0 | 0.0% | Pending -SHC_3BB0A8C1_0x00418F70 | 0.0% | Pending +SHC_3BB0A8C1_0x00418F70 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00418F90 | 0.0% | Pending @@ -5585,7 +5585,7 @@ SHC_3BB0A8C1_0x00419190 | 0.0% | Pending SHC_3BB0A8C1_0x00419290 | 0.0% | Pending -SHC_3BB0A8C1_0x00419340 | 0.0% | Pending +SHC_3BB0A8C1_0x00419340 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00419370 | 0.0% | Pending @@ -5817,13 +5817,13 @@ SHC_3BB0A8C1_0x00419EB0 | 0.0% | Pending SHC_3BB0A8C1_0x00419FA0 | 0.0% | Pending -SHC_3BB0A8C1_0x0041A060 | 0.0% | Pending +SHC_3BB0A8C1_0x0041A060 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0041A0A0 | 0.0% | Pending +SHC_3BB0A8C1_0x0041A0A0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0041A0B0 | 0.0% | Pending -SHC_3BB0A8C1_0x0041A0D0 | 0.0% | Pending +SHC_3BB0A8C1_0x0041A0D0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0041A100 | 0.0% | Pending @@ -6043,17 +6043,17 @@ SHC_3BB0A8C1_0x0041A2AE | 0.0% | Pending SHC_3BB0A8C1_0x0041A2AF | 0.0% | Pending -SHC_3BB0A8C1_0x0041A2B0 | 0.0% | Pending +SHC_3BB0A8C1_0x0041A2B0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0041A2E0 | 0.0% | Pending SHC_3BB0A8C1_0x0041A340 | 0.0% | Pending -SHC_3BB0A8C1_0x0041A390 | 0.0% | Pending +SHC_3BB0A8C1_0x0041A390 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0041A3C0 | 0.0% | Pending +SHC_3BB0A8C1_0x0041A3C0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0041A3F0 | 0.0% | Pending +SHC_3BB0A8C1_0x0041A3F0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0041A420 | 0.0% | Pending @@ -6061,17 +6061,17 @@ SHC_3BB0A8C1_0x0041A460 | 0.0% | Pending SHC_3BB0A8C1_0x0041A520 | 0.0% | Pending -SHC_3BB0A8C1_0x0041A5C0 | 0.0% | Pending +SHC_3BB0A8C1_0x0041A5C0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0041A5F0 | 0.0% | Pending +SHC_3BB0A8C1_0x0041A5F0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0041A620 | 0.0% | Pending +SHC_3BB0A8C1_0x0041A620 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0041A650 | 0.0% | Pending SHC_3BB0A8C1_0x0041A680 | 0.0% | Pending -SHC_3BB0A8C1_0x0041A710 | 0.0% | Pending +SHC_3BB0A8C1_0x0041A710 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0041A740 | 100.0% | Reimplemented @@ -6657,13 +6657,13 @@ SHC_3BB0A8C1_0x00424680 | 0.0% | Pending SHC_3BB0A8C1_0x004246B0 | 0.0% | Pending -SHC_3BB0A8C1_0x004246E0 | 0.0% | Pending +SHC_3BB0A8C1_0x004246E0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00424700 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00424720 | 0.0% | Pending -SHC_3BB0A8C1_0x00424770 | 0.0% | Pending +SHC_3BB0A8C1_0x00424770 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004247A0 | 0.0% | Pending @@ -6675,7 +6675,7 @@ SHC_3BB0A8C1_0x00424AD0 | 0.0% | Pending SHC_3BB0A8C1_0x00424B10 | 0.0% | Pending -SHC_3BB0A8C1_0x00424BD0 | 0.0% | Pending +SHC_3BB0A8C1_0x00424BD0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00424BE0 | 0.0% | Pending @@ -6769,7 +6769,7 @@ SHC_3BB0A8C1_0x00426570 | 0.0% | Pending SHC_3BB0A8C1_0x00426600 | 0.0% | Pending -SHC_3BB0A8C1_0x004266A0 | 0.0% | Pending +SHC_3BB0A8C1_0x004266A0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004266E0 | 0.0% | Pending @@ -6793,7 +6793,7 @@ SHC_3BB0A8C1_0x00426D30 | 0.0% | Pending SHC_3BB0A8C1_0x00426ED0 | 0.0% | Pending -SHC_3BB0A8C1_0x00426F80 | 0.0% | Pending +SHC_3BB0A8C1_0x00426F80 | 70.0% | instruction selection differs SHC_3BB0A8C1_0x00426FB0 | 0.0% | Pending @@ -6803,9 +6803,9 @@ SHC_3BB0A8C1_0x00427110 | 0.0% | Pending SHC_3BB0A8C1_0x00427180 | 0.0% | Pending -SHC_3BB0A8C1_0x004271E0 | 0.0% | Pending +SHC_3BB0A8C1_0x004271E0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00427210 | 0.0% | Pending +SHC_3BB0A8C1_0x00427210 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00427240 | 0.0% | Pending @@ -6867,7 +6867,7 @@ SHC_3BB0A8C1_0x00428480 | 0.0% | Pending SHC_3BB0A8C1_0x00428590 | 0.0% | Pending -SHC_3BB0A8C1_0x004285C0 | 0.0% | Pending +SHC_3BB0A8C1_0x004285C0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004285F0 | 0.0% | Pending @@ -6891,7 +6891,7 @@ SHC_3BB0A8C1_0x00428A60 | 0.0% | Pending SHC_3BB0A8C1_0x00428AC0 | 0.0% | Pending -SHC_3BB0A8C1_0x00429630 | 0.0% | Pending +SHC_3BB0A8C1_0x00429630 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00429650 | 0.0% | Pending @@ -6973,9 +6973,9 @@ SHC_3BB0A8C1_0x0042AC34 | 0.0% | Pending SHC_3BB0A8C1_0x0042AC38 | 0.0% | Pending -SHC_3BB0A8C1_0x0042AC40 | 0.0% | Pending +SHC_3BB0A8C1_0x0042AC40 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0042AC60 | 0.0% | Pending +SHC_3BB0A8C1_0x0042AC60 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0042AC70 | 0.0% | Pending @@ -7443,7 +7443,7 @@ SHC_3BB0A8C1_0x0042B960 | 0.0% | Pending SHC_3BB0A8C1_0x0042BA50 | 0.0% | Pending -SHC_3BB0A8C1_0x0042BB70 | 0.0% | Pending +SHC_3BB0A8C1_0x0042BB70 | 71.4% | instruction selection differs SHC_3BB0A8C1_0x0042BB90 | 0.0% | Pending @@ -7453,7 +7453,7 @@ SHC_3BB0A8C1_0x0042BF00 | 0.0% | Pending SHC_3BB0A8C1_0x0042BFC0 | 0.0% | Pending -SHC_3BB0A8C1_0x0042C060 | 0.0% | Pending +SHC_3BB0A8C1_0x0042C060 | 87.5% | jump target differs SHC_3BB0A8C1_0x0042C090 | 0.0% | Pending @@ -8719,7 +8719,7 @@ SHC_3BB0A8C1_0x0042EF78 | 0.0% | Pending SHC_3BB0A8C1_0x0042EF80 | 0.0% | Pending -SHC_3BB0A8C1_0x0042EFE0 | 0.0% | Pending +SHC_3BB0A8C1_0x0042EFE0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0042F010 | 0.0% | Pending @@ -8741,7 +8741,7 @@ SHC_3BB0A8C1_0x0042F3BC | 0.0% | Pending SHC_3BB0A8C1_0x0042F3C0 | 0.0% | Pending -SHC_3BB0A8C1_0x0042F3D0 | 0.0% | Pending +SHC_3BB0A8C1_0x0042F3D0 | 60.0% | instruction selection differs SHC_3BB0A8C1_0x0042F3F0 | 0.0% | Pending @@ -9163,7 +9163,7 @@ SHC_3BB0A8C1_0x0042F940 | 0.0% | Pending SHC_3BB0A8C1_0x0042FA10 | 0.0% | Pending -SHC_3BB0A8C1_0x0042FAA0 | 0.0% | Pending +SHC_3BB0A8C1_0x0042FAA0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0042FAC0 | 0.0% | Pending @@ -10535,7 +10535,7 @@ SHC_3BB0A8C1_0x00430BF0 | 0.0% | Pending SHC_3BB0A8C1_0x00430CB8 | 0.0% | Pending -SHC_3BB0A8C1_0x00430CC0 | 0.0% | Pending +SHC_3BB0A8C1_0x00430CC0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00430CE0 | 0.0% | Pending @@ -11083,9 +11083,9 @@ SHC_3BB0A8C1_0x00431B60 | 0.0% | Pending SHC_3BB0A8C1_0x00433030 | 0.0% | Pending -SHC_3BB0A8C1_0x00433200 | 0.0% | Pending +SHC_3BB0A8C1_0x00433200 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00433230 | 0.0% | Pending +SHC_3BB0A8C1_0x00433230 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00433260 | 0.0% | Pending @@ -11099,7 +11099,7 @@ SHC_3BB0A8C1_0x00433558 | 0.0% | Pending SHC_3BB0A8C1_0x0043355C | 0.0% | Pending -SHC_3BB0A8C1_0x00433560 | 0.0% | Pending +SHC_3BB0A8C1_0x00433560 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004335A0 | 0.0% | Pending @@ -11135,9 +11135,9 @@ SHC_3BB0A8C1_0x00434224 | 0.0% | Pending SHC_3BB0A8C1_0x00434228 | 0.0% | Pending -SHC_3BB0A8C1_0x00434230 | 0.0% | Pending +SHC_3BB0A8C1_0x00434230 | 88.9% | jump target differs -SHC_3BB0A8C1_0x00434260 | 0.0% | Pending +SHC_3BB0A8C1_0x00434260 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00434270 | 0.0% | Pending @@ -13357,7 +13357,7 @@ SHC_3BB0A8C1_0x0043937C | 0.0% | Pending SHC_3BB0A8C1_0x00439380 | 0.0% | Pending -SHC_3BB0A8C1_0x00439390 | 0.0% | Pending +SHC_3BB0A8C1_0x00439390 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004393C0 | 0.0% | Pending @@ -13389,19 +13389,19 @@ SHC_3BB0A8C1_0x00439724 | 0.0% | Pending SHC_3BB0A8C1_0x00439730 | 0.0% | Pending -SHC_3BB0A8C1_0x00439890 | 0.0% | Pending +SHC_3BB0A8C1_0x00439890 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004398B0 | 0.0% | Pending -SHC_3BB0A8C1_0x0043A850 | 0.0% | Pending +SHC_3BB0A8C1_0x0043A850 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0043A860 | 0.0% | Pending +SHC_3BB0A8C1_0x0043A860 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0043A880 | 0.0% | Pending +SHC_3BB0A8C1_0x0043A880 | 90.9% | jump target differs -SHC_3BB0A8C1_0x0043A8C0 | 0.0% | Pending +SHC_3BB0A8C1_0x0043A8C0 | 75.0% | jump target differs -SHC_3BB0A8C1_0x0043A8D0 | 0.0% | Pending +SHC_3BB0A8C1_0x0043A8D0 | 50.0% | jump target differs SHC_3BB0A8C1_0x0043A8E0 | 0.0% | Pending @@ -13595,9 +13595,9 @@ SHC_3BB0A8C1_0x0043E5F0 | 0.0% | Pending SHC_3BB0A8C1_0x0043E6C0 | 0.0% | Pending -SHC_3BB0A8C1_0x0043F2B0 | 0.0% | Pending +SHC_3BB0A8C1_0x0043F2B0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0043F2C0 | 0.0% | Pending +SHC_3BB0A8C1_0x0043F2C0 | 87.5% | jump target differs SHC_3BB0A8C1_0x0043F2F0 | 0.0% | Pending @@ -13611,9 +13611,9 @@ SHC_3BB0A8C1_0x0043FBB0 | 0.0% | Pending SHC_3BB0A8C1_0x0043FBF0 | 0.0% | Pending -SHC_3BB0A8C1_0x0043FC80 | 0.0% | Pending +SHC_3BB0A8C1_0x0043FC80 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0043FCA0 | 0.0% | Pending +SHC_3BB0A8C1_0x0043FCA0 | 0.0% | jump target differs SHC_3BB0A8C1_0x0043FCB0 | 0.0% | Pending @@ -13631,13 +13631,13 @@ SHC_3BB0A8C1_0x00440280 | 0.0% | Pending SHC_3BB0A8C1_0x00440360 | 0.0% | Pending -SHC_3BB0A8C1_0x004403D0 | 0.0% | Pending +SHC_3BB0A8C1_0x004403D0 | 88.9% | jump target differs -SHC_3BB0A8C1_0x00440400 | 0.0% | Pending +SHC_3BB0A8C1_0x00440400 | 50.0% | jump target differs -SHC_3BB0A8C1_0x00440410 | 0.0% | Pending +SHC_3BB0A8C1_0x00440410 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00440420 | 0.0% | Pending +SHC_3BB0A8C1_0x00440420 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00440430 | 0.0% | Pending @@ -16649,11 +16649,11 @@ SHC_3BB0A8C1_0x0044A720 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0044A830 | 0.0% | Pending -SHC_3BB0A8C1_0x0044AA70 | 0.0% | Pending +SHC_3BB0A8C1_0x0044AA70 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0044AA80 | 0.0% | Pending +SHC_3BB0A8C1_0x0044AA80 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0044AAA0 | 0.0% | Pending +SHC_3BB0A8C1_0x0044AAA0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0044AAB0 | 100.0% | Reimplemented @@ -16867,7 +16867,7 @@ SHC_3BB0A8C1_0x0044B680 | 0.0% | Pending SHC_3BB0A8C1_0x0044B760 | 0.0% | Pending -SHC_3BB0A8C1_0x0044B7D0 | 0.0% | Pending +SHC_3BB0A8C1_0x0044B7D0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0044B800 | 0.0% | Pending @@ -16915,17 +16915,17 @@ SHC_3BB0A8C1_0x0044CBE0 | 0.0% | Pending SHC_3BB0A8C1_0x0044CC30 | 0.0% | Pending -SHC_3BB0A8C1_0x0044CCA0 | 0.0% | Pending +SHC_3BB0A8C1_0x0044CCA0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0044CCC0 | 0.0% | Pending +SHC_3BB0A8C1_0x0044CCC0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0044CCD0 | 0.0% | Pending +SHC_3BB0A8C1_0x0044CCD0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0044CCF0 | 0.0% | Pending +SHC_3BB0A8C1_0x0044CCF0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0044CD10 | 0.0% | Pending +SHC_3BB0A8C1_0x0044CD10 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0044CD30 | 0.0% | Pending +SHC_3BB0A8C1_0x0044CD30 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0044CD40 | 0.0% | Pending @@ -16979,15 +16979,15 @@ SHC_3BB0A8C1_0x00454700 | 0.0% | Pending SHC_3BB0A8C1_0x004547C0 | 0.0% | Pending -SHC_3BB0A8C1_0x004548D0 | 0.0% | Pending +SHC_3BB0A8C1_0x004548D0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00454900 | 0.0% | Pending -SHC_3BB0A8C1_0x00454960 | 0.0% | Pending +SHC_3BB0A8C1_0x00454960 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00454990 | 0.0% | Pending +SHC_3BB0A8C1_0x00454990 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004549C0 | 0.0% | Pending +SHC_3BB0A8C1_0x004549C0 | 40.0% | instruction selection differs SHC_3BB0A8C1_0x004549F0 | 0.0% | Pending @@ -16999,21 +16999,21 @@ SHC_3BB0A8C1_0x00454CE0 | 0.0% | Pending SHC_3BB0A8C1_0x00454D20 | 0.0% | Pending -SHC_3BB0A8C1_0x00454EE0 | 0.0% | Pending +SHC_3BB0A8C1_0x00454EE0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00454EF0 | 0.0% | Pending +SHC_3BB0A8C1_0x00454EF0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00454F00 | 0.0% | Pending SHC_3BB0A8C1_0x00455050 | 0.0% | Pending -SHC_3BB0A8C1_0x00455250 | 0.0% | Pending +SHC_3BB0A8C1_0x00455250 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00455270 | 0.0% | Pending +SHC_3BB0A8C1_0x00455270 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00455290 | 0.0% | Pending -SHC_3BB0A8C1_0x004552E0 | 0.0% | Pending +SHC_3BB0A8C1_0x004552E0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00455300 | 0.0% | Pending @@ -17045,7 +17045,7 @@ SHC_3BB0A8C1_0x00455E40 | 0.0% | Pending SHC_3BB0A8C1_0x004560F0 | 0.0% | Pending -SHC_3BB0A8C1_0x004563B0 | 0.0% | Pending +SHC_3BB0A8C1_0x004563B0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004563D0 | 0.0% | Pending @@ -17669,7 +17669,7 @@ SHC_3BB0A8C1_0x00457A70 | 0.0% | Pending SHC_3BB0A8C1_0x00457AD0 | 0.0% | Pending -SHC_3BB0A8C1_0x00457B40 | 0.0% | Pending +SHC_3BB0A8C1_0x00457B40 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00457B80 | 0.0% | Pending @@ -17693,15 +17693,15 @@ SHC_3BB0A8C1_0x004585B0 | 0.0% | Pending SHC_3BB0A8C1_0x004585F0 | 0.0% | Pending -SHC_3BB0A8C1_0x004586D0 | 0.0% | Pending +SHC_3BB0A8C1_0x004586D0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004586F0 | 0.0% | Pending -SHC_3BB0A8C1_0x00458700 | 0.0% | Pending +SHC_3BB0A8C1_0x00458700 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00458720 | 0.0% | Pending -SHC_3BB0A8C1_0x00458740 | 0.0% | Pending +SHC_3BB0A8C1_0x00458740 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00458760 | 0.0% | Pending @@ -17713,13 +17713,13 @@ SHC_3BB0A8C1_0x00458820 | 0.0% | Pending SHC_3BB0A8C1_0x00458840 | 0.0% | Pending -SHC_3BB0A8C1_0x00458890 | 0.0% | Pending +SHC_3BB0A8C1_0x00458890 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004588A0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004588D0 | 0.0% | Pending +SHC_3BB0A8C1_0x004588D0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004588F0 | 0.0% | Pending +SHC_3BB0A8C1_0x004588F0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00458910 | 100.0% | Reimplemented @@ -17757,11 +17757,11 @@ SHC_3BB0A8C1_0x00458F70 | 0.0% | Pending SHC_3BB0A8C1_0x00459080 | 0.0% | Pending -SHC_3BB0A8C1_0x00459140 | 0.0% | Pending +SHC_3BB0A8C1_0x00459140 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00459170 | 0.0% | Pending +SHC_3BB0A8C1_0x00459170 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004591B0 | 0.0% | Pending +SHC_3BB0A8C1_0x004591B0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004591F0 | 0.0% | Pending @@ -17889,7 +17889,7 @@ SHC_3BB0A8C1_0x004595D0 | 0.0% | Pending SHC_3BB0A8C1_0x00459640 | 0.0% | Pending -SHC_3BB0A8C1_0x004596D0 | 0.0% | Pending +SHC_3BB0A8C1_0x004596D0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00459700 | 0.0% | Pending @@ -17907,9 +17907,9 @@ SHC_3BB0A8C1_0x00459A40 | 0.0% | Pending SHC_3BB0A8C1_0x00459B50 | 0.0% | Pending -SHC_3BB0A8C1_0x00459BB0 | 0.0% | Pending +SHC_3BB0A8C1_0x00459BB0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00459BE0 | 0.0% | Pending +SHC_3BB0A8C1_0x00459BE0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00459BF0 | 0.0% | Pending @@ -18025,7 +18025,7 @@ SHC_3BB0A8C1_0x0045AE70 | 0.0% | Pending SHC_3BB0A8C1_0x0045AEB0 | 0.0% | Pending -SHC_3BB0A8C1_0x0045AF00 | 0.0% | Pending +SHC_3BB0A8C1_0x0045AF00 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0045AF30 | 0.0% | Pending @@ -18035,13 +18035,13 @@ SHC_3BB0A8C1_0x0045B3A0 | 0.0% | Pending SHC_3BB0A8C1_0x0045B3E0 | 0.0% | Pending -SHC_3BB0A8C1_0x0045B460 | 0.0% | Pending +SHC_3BB0A8C1_0x0045B460 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0045B4A0 | 0.0% | Pending SHC_3BB0A8C1_0x0045B6B0 | 0.0% | Pending -SHC_3BB0A8C1_0x0045B7F0 | 0.0% | Pending +SHC_3BB0A8C1_0x0045B7F0 | 63.2% | instruction selection differs SHC_3BB0A8C1_0x0045B830 | 0.0% | Pending @@ -18145,11 +18145,11 @@ SHC_3BB0A8C1_0x0045CA20 | 0.0% | Pending SHC_3BB0A8C1_0x0045CD10 | 0.0% | Pending -SHC_3BB0A8C1_0x0045D060 | 0.0% | Pending +SHC_3BB0A8C1_0x0045D060 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0045D080 | 0.0% | Pending -SHC_3BB0A8C1_0x0045D0B0 | 0.0% | Pending +SHC_3BB0A8C1_0x0045D0B0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0045D0C0 | 0.0% | Pending @@ -18747,7 +18747,7 @@ SHC_3BB0A8C1_0x0045F0CD | 0.0% | Pending SHC_3BB0A8C1_0x0045F0D0 | 0.0% | Pending -SHC_3BB0A8C1_0x0045F120 | 0.0% | Pending +SHC_3BB0A8C1_0x0045F120 | 75.0% | jump target differs SHC_3BB0A8C1_0x0045F130 | 0.0% | Pending @@ -19153,7 +19153,7 @@ SHC_3BB0A8C1_0x00462FE0 | 0.0% | Pending SHC_3BB0A8C1_0x00462FF0 | 0.0% | Pending -SHC_3BB0A8C1_0x004630B0 | 0.0% | Pending +SHC_3BB0A8C1_0x004630B0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004630D0 | 0.0% | Pending @@ -19843,11 +19843,11 @@ SHC_3BB0A8C1_0x00464856 | 0.0% | Pending SHC_3BB0A8C1_0x00464860 | 0.0% | Pending -SHC_3BB0A8C1_0x004649C0 | 0.0% | Pending +SHC_3BB0A8C1_0x004649C0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004649D0 | 0.0% | Pending -SHC_3BB0A8C1_0x00464D90 | 0.0% | Pending +SHC_3BB0A8C1_0x00464D90 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00464DA0 | 0.0% | Pending @@ -19857,19 +19857,19 @@ SHC_3BB0A8C1_0x00464EF0 | 0.0% | Pending SHC_3BB0A8C1_0x00465040 | 0.0% | Pending -SHC_3BB0A8C1_0x00465080 | 0.0% | Pending +SHC_3BB0A8C1_0x00465080 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004650A0 | 0.0% | Pending +SHC_3BB0A8C1_0x004650A0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004650C0 | 0.0% | Pending +SHC_3BB0A8C1_0x004650C0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004650F0 | 0.0% | Pending +SHC_3BB0A8C1_0x004650F0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00465110 | 0.0% | Pending SHC_3BB0A8C1_0x00465200 | 0.0% | Pending -SHC_3BB0A8C1_0x004652A0 | 0.0% | Pending +SHC_3BB0A8C1_0x004652A0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004652D0 | 0.0% | Pending @@ -19905,15 +19905,15 @@ SHC_3BB0A8C1_0x00465700 | 0.0% | Pending SHC_3BB0A8C1_0x004657B0 | 0.0% | Pending -SHC_3BB0A8C1_0x00465800 | 0.0% | Pending +SHC_3BB0A8C1_0x00465800 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00465820 | 0.0% | Pending -SHC_3BB0A8C1_0x00465890 | 0.0% | Pending +SHC_3BB0A8C1_0x00465890 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004658B0 | 0.0% | Pending -SHC_3BB0A8C1_0x00465920 | 0.0% | Pending +SHC_3BB0A8C1_0x00465920 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00465950 | 0.0% | Pending @@ -19929,7 +19929,7 @@ SHC_3BB0A8C1_0x00465F20 | 0.0% | Pending SHC_3BB0A8C1_0x00465F90 | 0.0% | Pending -SHC_3BB0A8C1_0x004660B0 | 0.0% | Pending +SHC_3BB0A8C1_0x004660B0 | 81.8% | jump target differs SHC_3BB0A8C1_0x004660F0 | 0.0% | Pending @@ -19945,7 +19945,7 @@ SHC_3BB0A8C1_0x00466480 | 0.0% | Pending SHC_3BB0A8C1_0x00466620 | 0.0% | Pending -SHC_3BB0A8C1_0x00466710 | 0.0% | Pending +SHC_3BB0A8C1_0x00466710 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00466730 | 0.0% | Pending @@ -19975,9 +19975,9 @@ SHC_3BB0A8C1_0x004668E0 | 0.0% | Pending SHC_3BB0A8C1_0x004668E4 | 0.0% | Pending -SHC_3BB0A8C1_0x004668F0 | 0.0% | Pending +SHC_3BB0A8C1_0x004668F0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00466920 | 0.0% | Pending +SHC_3BB0A8C1_0x00466920 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00466950 | 0.0% | Pending @@ -19987,9 +19987,9 @@ SHC_3BB0A8C1_0x00466C20 | 0.0% | Pending SHC_3BB0A8C1_0x00466D10 | 0.0% | Pending -SHC_3BB0A8C1_0x00466E00 | 0.0% | Pending +SHC_3BB0A8C1_0x00466E00 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00466E10 | 0.0% | Pending +SHC_3BB0A8C1_0x00466E10 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00466E20 | 0.0% | Pending @@ -20051,7 +20051,7 @@ SHC_3BB0A8C1_0x00467E04 | 0.0% | Pending SHC_3BB0A8C1_0x00467E26 | 0.0% | Pending -SHC_3BB0A8C1_0x00467E40 | 0.0% | Pending +SHC_3BB0A8C1_0x00467E40 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00467E50 | 0.0% | Pending @@ -20059,7 +20059,7 @@ SHC_3BB0A8C1_0x00467EC0 | 0.0% | Pending SHC_3BB0A8C1_0x00467F50 | 0.0% | Pending -SHC_3BB0A8C1_0x00467F60 | 0.0% | Pending +SHC_3BB0A8C1_0x00467F60 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00467F80 | 0.0% | Pending @@ -20097,7 +20097,7 @@ SHC_3BB0A8C1_0x00468C30 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00468C40 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00468C50 | 0.0% | Pending +SHC_3BB0A8C1_0x00468C50 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00468C80 | 0.0% | Pending @@ -20743,11 +20743,11 @@ SHC_3BB0A8C1_0x0046B1B0 | 0.0% | Pending SHC_3BB0A8C1_0x0046B1F0 | 0.0% | Pending -SHC_3BB0A8C1_0x0046B2F0 | 0.0% | Pending +SHC_3BB0A8C1_0x0046B2F0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0046B300 | 0.0% | Pending +SHC_3BB0A8C1_0x0046B300 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0046B320 | 0.0% | Pending +SHC_3BB0A8C1_0x0046B320 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0046B340 | 0.0% | Pending @@ -20893,7 +20893,7 @@ SHC_3BB0A8C1_0x0046BBD0 | 0.0% | Pending SHC_3BB0A8C1_0x0046BC90 | 0.0% | Pending -SHC_3BB0A8C1_0x0046BD20 | 0.0% | Pending +SHC_3BB0A8C1_0x0046BD20 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0046BD50 | 0.0% | Pending @@ -20969,9 +20969,9 @@ SHC_3BB0A8C1_0x0046CEB0 | 0.0% | Pending SHC_3BB0A8C1_0x0046CEC0 | 0.0% | Pending -SHC_3BB0A8C1_0x0046CED0 | 0.0% | Pending +SHC_3BB0A8C1_0x0046CED0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0046CEF0 | 0.0% | Pending +SHC_3BB0A8C1_0x0046CEF0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0046CF10 | 0.0% | Pending @@ -21201,7 +21201,7 @@ SHC_3BB0A8C1_0x0046F690 | 0.0% | Pending SHC_3BB0A8C1_0x0046F6B0 | 0.0% | Pending -SHC_3BB0A8C1_0x0046F730 | 0.0% | Pending +SHC_3BB0A8C1_0x0046F730 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0046F750 | 0.0% | Pending @@ -21327,11 +21327,11 @@ SHC_3BB0A8C1_0x004718C0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004718F0 | 0.0% | Pending -SHC_3BB0A8C1_0x004719E0 | 0.0% | Pending +SHC_3BB0A8C1_0x004719E0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00471A00 | 0.0% | Pending -SHC_3BB0A8C1_0x00471A80 | 0.0% | Pending +SHC_3BB0A8C1_0x00471A80 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00471AA0 | 0.0% | Pending @@ -22307,7 +22307,7 @@ SHC_3BB0A8C1_0x0047D0D8 | 0.0% | Pending SHC_3BB0A8C1_0x0047D0DC | 0.0% | Pending -SHC_3BB0A8C1_0x0047D0E0 | 0.0% | Pending +SHC_3BB0A8C1_0x0047D0E0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0047D100 | 0.0% | Pending @@ -22327,7 +22327,7 @@ SHC_3BB0A8C1_0x0047D3DC | 0.0% | Pending SHC_3BB0A8C1_0x0047D3E0 | 0.0% | Pending -SHC_3BB0A8C1_0x0047D3F0 | 0.0% | Pending +SHC_3BB0A8C1_0x0047D3F0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0047D410 | 0.0% | Pending @@ -22373,9 +22373,9 @@ SHC_3BB0A8C1_0x0047E5B0 | 0.0% | Pending SHC_3BB0A8C1_0x0047E5D0 | 0.0% | Pending -SHC_3BB0A8C1_0x0047E7E0 | 0.0% | Pending +SHC_3BB0A8C1_0x0047E7E0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0047E800 | 0.0% | Pending +SHC_3BB0A8C1_0x0047E800 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0047E830 | 0.0% | Pending @@ -22393,7 +22393,7 @@ SHC_3BB0A8C1_0x0047EC10 | 0.0% | Pending SHC_3BB0A8C1_0x0047EDE0 | 0.0% | Pending -SHC_3BB0A8C1_0x0047EEB0 | 0.0% | Pending +SHC_3BB0A8C1_0x0047EEB0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0047EED0 | 0.0% | Pending @@ -22411,13 +22411,13 @@ SHC_3BB0A8C1_0x0047FD50 | 0.0% | Pending SHC_3BB0A8C1_0x0047FEA0 | 0.0% | Pending -SHC_3BB0A8C1_0x0047FFA0 | 0.0% | Pending +SHC_3BB0A8C1_0x0047FFA0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0047FFE0 | 0.0% | Pending SHC_3BB0A8C1_0x00480050 | 0.0% | Pending -SHC_3BB0A8C1_0x004800B0 | 0.0% | Pending +SHC_3BB0A8C1_0x004800B0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004800E0 | 0.0% | Pending @@ -22425,7 +22425,7 @@ SHC_3BB0A8C1_0x00480210 | 0.0% | Pending SHC_3BB0A8C1_0x00480440 | 0.0% | Pending -SHC_3BB0A8C1_0x00480570 | 0.0% | Pending +SHC_3BB0A8C1_0x00480570 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00480580 | 0.0% | Pending @@ -22547,7 +22547,7 @@ SHC_3BB0A8C1_0x004821D5 | 0.0% | Pending SHC_3BB0A8C1_0x004821E0 | 0.0% | Pending -SHC_3BB0A8C1_0x00482280 | 0.0% | Pending +SHC_3BB0A8C1_0x00482280 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00482290 | 0.0% | Pending @@ -23167,7 +23167,7 @@ SHC_3BB0A8C1_0x0048BD40 | 0.0% | Pending SHC_3BB0A8C1_0x0048BD80 | 0.0% | Pending -SHC_3BB0A8C1_0x0048BF70 | 0.0% | Pending +SHC_3BB0A8C1_0x0048BF70 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0048BF80 | 0.0% | Pending @@ -23357,7 +23357,7 @@ SHC_3BB0A8C1_0x0048F841 | 0.0% | Pending SHC_3BB0A8C1_0x0048F842 | 0.0% | Pending -SHC_3BB0A8C1_0x0048F850 | 0.0% | Pending +SHC_3BB0A8C1_0x0048F850 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0048F870 | 0.0% | Pending @@ -23373,7 +23373,7 @@ SHC_3BB0A8C1_0x00490060 | 0.0% | Pending SHC_3BB0A8C1_0x00490080 | 0.0% | Pending -SHC_3BB0A8C1_0x00490340 | 0.0% | Pending +SHC_3BB0A8C1_0x00490340 | 94.4% | jump target differs SHC_3BB0A8C1_0x00490380 | 0.0% | Pending @@ -23407,13 +23407,13 @@ SHC_3BB0A8C1_0x00491680 | 0.0% | Pending SHC_3BB0A8C1_0x004916C0 | 0.0% | Pending -SHC_3BB0A8C1_0x00491730 | 0.0% | Pending +SHC_3BB0A8C1_0x00491730 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00491750 | 0.0% | Pending SHC_3BB0A8C1_0x004917C0 | 0.0% | Pending -SHC_3BB0A8C1_0x00491810 | 0.0% | Pending +SHC_3BB0A8C1_0x00491810 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00491840 | 0.0% | Pending @@ -23421,9 +23421,9 @@ SHC_3BB0A8C1_0x00491A30 | 0.0% | Pending SHC_3BB0A8C1_0x00491AC0 | 0.0% | Pending -SHC_3BB0A8C1_0x00491BF0 | 0.0% | Pending +SHC_3BB0A8C1_0x00491BF0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00491C20 | 0.0% | Pending +SHC_3BB0A8C1_0x00491C20 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00491C50 | 0.0% | Pending @@ -23431,7 +23431,7 @@ SHC_3BB0A8C1_0x00491CE0 | 0.0% | Pending SHC_3BB0A8C1_0x00491D70 | 0.0% | Pending -SHC_3BB0A8C1_0x00491E80 | 0.0% | Pending +SHC_3BB0A8C1_0x00491E80 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00491EB0 | 0.0% | Pending @@ -23485,7 +23485,7 @@ SHC_3BB0A8C1_0x00492654 | 0.0% | Pending SHC_3BB0A8C1_0x00492658 | 0.0% | Pending -SHC_3BB0A8C1_0x00492660 | 0.0% | Pending +SHC_3BB0A8C1_0x00492660 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00492690 | 0.0% | Pending @@ -23501,7 +23501,7 @@ SHC_3BB0A8C1_0x004929BC | 0.0% | Pending SHC_3BB0A8C1_0x004929C0 | 0.0% | Pending -SHC_3BB0A8C1_0x00492A60 | 0.0% | Pending +SHC_3BB0A8C1_0x00492A60 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00492A90 | 0.0% | Pending @@ -23521,7 +23521,7 @@ SHC_3BB0A8C1_0x00492C58 | 0.0% | Pending SHC_3BB0A8C1_0x00492C5C | 0.0% | Pending -SHC_3BB0A8C1_0x00492C60 | 0.0% | Pending +SHC_3BB0A8C1_0x00492C60 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00492C90 | 0.0% | Pending @@ -23629,7 +23629,7 @@ SHC_3BB0A8C1_0x00493690 | 0.0% | Pending SHC_3BB0A8C1_0x004937A4 | 0.0% | Pending -SHC_3BB0A8C1_0x004937B0 | 0.0% | Pending +SHC_3BB0A8C1_0x004937B0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004937E0 | 0.0% | Pending @@ -24041,7 +24041,7 @@ SHC_3BB0A8C1_0x004941E7 | 0.0% | Pending SHC_3BB0A8C1_0x004941E8 | 0.0% | Pending -SHC_3BB0A8C1_0x004941F0 | 0.0% | Pending +SHC_3BB0A8C1_0x004941F0 | 80.0% | jump target differs SHC_3BB0A8C1_0x00494210 | 0.0% | Pending @@ -24111,7 +24111,7 @@ SHC_3BB0A8C1_0x004948BF | 0.0% | Pending SHC_3BB0A8C1_0x004948C0 | 0.0% | Pending -SHC_3BB0A8C1_0x00494920 | 0.0% | Pending +SHC_3BB0A8C1_0x00494920 | 85.7% | jump target differs SHC_3BB0A8C1_0x00494950 | 0.0% | Pending @@ -24213,9 +24213,9 @@ SHC_3BB0A8C1_0x00495230 | 0.0% | Pending SHC_3BB0A8C1_0x004954A0 | 0.0% | Pending -SHC_3BB0A8C1_0x00495800 | 0.0% | Pending +SHC_3BB0A8C1_0x00495800 | 83.3% | jump target differs -SHC_3BB0A8C1_0x00495840 | 0.0% | Pending +SHC_3BB0A8C1_0x00495840 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00495860 | 0.0% | Pending @@ -24343,13 +24343,13 @@ SHC_3BB0A8C1_0x00496E19 | 0.0% | Pending SHC_3BB0A8C1_0x00496E1A | 0.0% | Pending -SHC_3BB0A8C1_0x00496E20 | 0.0% | Pending +SHC_3BB0A8C1_0x00496E20 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00496E30 | 0.0% | Pending +SHC_3BB0A8C1_0x00496E30 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00496E40 | 0.0% | Pending -SHC_3BB0A8C1_0x00496EA0 | 0.0% | Pending +SHC_3BB0A8C1_0x00496EA0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00496EC0 | 0.0% | Pending @@ -24417,7 +24417,7 @@ SHC_3BB0A8C1_0x0049AF50 | 0.0% | Pending SHC_3BB0A8C1_0x0049B000 | 0.0% | Pending -SHC_3BB0A8C1_0x0049B1C0 | 0.0% | Pending +SHC_3BB0A8C1_0x0049B1C0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0049B1D0 | 0.0% | Pending @@ -25233,7 +25233,7 @@ SHC_3BB0A8C1_0x004A4930 | 0.0% | Pending SHC_3BB0A8C1_0x004A4B30 | 0.0% | Pending -SHC_3BB0A8C1_0x004A4B80 | 0.0% | Pending +SHC_3BB0A8C1_0x004A4B80 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004A4BB0 | 0.0% | Pending @@ -25267,7 +25267,7 @@ SHC_3BB0A8C1_0x004A5B00 | 0.0% | Pending SHC_3BB0A8C1_0x004A5DA0 | 0.0% | Pending -SHC_3BB0A8C1_0x004A5F60 | 0.0% | Pending +SHC_3BB0A8C1_0x004A5F60 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004A5F90 | 0.0% | Pending @@ -25455,7 +25455,7 @@ SHC_3BB0A8C1_0x004A91F7 | 0.0% | Pending SHC_3BB0A8C1_0x004A9200 | 0.0% | Pending -SHC_3BB0A8C1_0x004A94E0 | 0.0% | Pending +SHC_3BB0A8C1_0x004A94E0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004A9510 | 0.0% | Pending @@ -25471,17 +25471,17 @@ SHC_3BB0A8C1_0x004A98C0 | 0.0% | Pending SHC_3BB0A8C1_0x004A9B20 | 0.0% | Pending -SHC_3BB0A8C1_0x004A9DD0 | 0.0% | Pending +SHC_3BB0A8C1_0x004A9DD0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004A9E00 | 0.0% | Pending SHC_3BB0A8C1_0x004A9E60 | 0.0% | Pending -SHC_3BB0A8C1_0x004A9E80 | 0.0% | Pending +SHC_3BB0A8C1_0x004A9E80 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004A9E90 | 0.0% | Pending -SHC_3BB0A8C1_0x004A9EB0 | 0.0% | Pending +SHC_3BB0A8C1_0x004A9EB0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004A9ED0 | 0.0% | Pending @@ -25519,37 +25519,37 @@ SHC_3BB0A8C1_0x004AA930 | 0.0% | Pending SHC_3BB0A8C1_0x004AA970 | 0.0% | Pending -SHC_3BB0A8C1_0x004AAA40 | 0.0% | Pending +SHC_3BB0A8C1_0x004AAA40 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004AAA60 | 0.0% | Pending +SHC_3BB0A8C1_0x004AAA60 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004AAA80 | 0.0% | Pending +SHC_3BB0A8C1_0x004AAA80 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004AAAA0 | 0.0% | Pending +SHC_3BB0A8C1_0x004AAAA0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004AAAC0 | 0.0% | Pending +SHC_3BB0A8C1_0x004AAAC0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004AAAE0 | 0.0% | Pending +SHC_3BB0A8C1_0x004AAAE0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004AAB00 | 0.0% | Pending +SHC_3BB0A8C1_0x004AAB00 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004AAB20 | 0.0% | Pending +SHC_3BB0A8C1_0x004AAB20 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004AAB40 | 0.0% | Pending +SHC_3BB0A8C1_0x004AAB40 | 50.0% | jump target differs SHC_3BB0A8C1_0x004AAB50 | 0.0% | Pending -SHC_3BB0A8C1_0x004AB440 | 0.0% | Pending +SHC_3BB0A8C1_0x004AB440 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004AB460 | 0.0% | Pending -SHC_3BB0A8C1_0x004AB4B0 | 0.0% | Pending +SHC_3BB0A8C1_0x004AB4B0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004AB4E0 | 0.0% | Pending +SHC_3BB0A8C1_0x004AB4E0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004AB510 | 0.0% | Pending +SHC_3BB0A8C1_0x004AB510 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004AB540 | 0.0% | Pending +SHC_3BB0A8C1_0x004AB540 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004AB570 | 0.0% | Pending @@ -25619,17 +25619,17 @@ SHC_3BB0A8C1_0x004ABB91 | 0.0% | Pending SHC_3BB0A8C1_0x004ABBA0 | 0.0% | Pending -SHC_3BB0A8C1_0x004ABCB0 | 0.0% | Pending +SHC_3BB0A8C1_0x004ABCB0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004ABCE0 | 0.0% | Pending +SHC_3BB0A8C1_0x004ABCE0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004ABD10 | 0.0% | Pending +SHC_3BB0A8C1_0x004ABD10 | 0.0% | jump target differs SHC_3BB0A8C1_0x004ABD20 | 0.0% | Pending -SHC_3BB0A8C1_0x004ABE50 | 0.0% | Pending +SHC_3BB0A8C1_0x004ABE50 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004ABE80 | 0.0% | Pending +SHC_3BB0A8C1_0x004ABE80 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004ABEB0 | 0.0% | Pending @@ -25779,7 +25779,7 @@ SHC_3BB0A8C1_0x004AC24E | 0.0% | Pending SHC_3BB0A8C1_0x004AC24F | 0.0% | Pending -SHC_3BB0A8C1_0x004AC250 | 0.0% | Pending +SHC_3BB0A8C1_0x004AC250 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004AC280 | 0.0% | Pending @@ -25903,31 +25903,31 @@ SHC_3BB0A8C1_0x004AF4C0 | 0.0% | Pending SHC_3BB0A8C1_0x004AF5E0 | 0.0% | Pending -SHC_3BB0A8C1_0x004AF630 | 0.0% | Pending +SHC_3BB0A8C1_0x004AF630 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004AF650 | 0.0% | Pending +SHC_3BB0A8C1_0x004AF650 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004AF680 | 0.0% | Pending +SHC_3BB0A8C1_0x004AF680 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004AF6B0 | 0.0% | Pending +SHC_3BB0A8C1_0x004AF6B0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004AF6E0 | 0.0% | Pending +SHC_3BB0A8C1_0x004AF6E0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004AF700 | 0.0% | Pending -SHC_3BB0A8C1_0x004AF800 | 0.0% | Pending +SHC_3BB0A8C1_0x004AF800 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004AF820 | 0.0% | Pending +SHC_3BB0A8C1_0x004AF820 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004AF840 | 0.0% | Pending +SHC_3BB0A8C1_0x004AF840 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004AF860 | 0.0% | Pending -SHC_3BB0A8C1_0x004AFA50 | 0.0% | Pending +SHC_3BB0A8C1_0x004AFA50 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004AFA80 | 0.0% | Pending -SHC_3BB0A8C1_0x004AFB00 | 0.0% | Pending +SHC_3BB0A8C1_0x004AFB00 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004AFB30 | 0.0% | Pending @@ -25967,7 +25967,7 @@ SHC_3BB0A8C1_0x004B0F70 | 0.0% | Pending SHC_3BB0A8C1_0x004B1000 | 0.0% | Pending -SHC_3BB0A8C1_0x004B1090 | 0.0% | Pending +SHC_3BB0A8C1_0x004B1090 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004B10D0 | 0.0% | Pending @@ -26001,7 +26001,7 @@ SHC_3BB0A8C1_0x004B1E60 | 0.0% | Pending SHC_3BB0A8C1_0x004B1EB0 | 0.0% | Pending -SHC_3BB0A8C1_0x004B20B0 | 0.0% | Pending +SHC_3BB0A8C1_0x004B20B0 | 67.6% | instruction selection differs SHC_3BB0A8C1_0x004B2280 | 0.0% | Pending @@ -26881,7 +26881,7 @@ SHC_3BB0A8C1_0x004B51A0 | 0.0% | Pending SHC_3BB0A8C1_0x004B5280 | 0.0% | Pending -SHC_3BB0A8C1_0x004B5300 | 0.0% | Pending +SHC_3BB0A8C1_0x004B5300 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004B5330 | 0.0% | Pending @@ -26905,7 +26905,7 @@ SHC_3BB0A8C1_0x004B6480 | 0.0% | Pending SHC_3BB0A8C1_0x004B64D0 | 0.0% | Pending -SHC_3BB0A8C1_0x004B6500 | 0.0% | Pending +SHC_3BB0A8C1_0x004B6500 | 87.5% | jump target differs SHC_3BB0A8C1_0x004B6530 | 0.0% | Pending @@ -26915,9 +26915,9 @@ SHC_3BB0A8C1_0x004B65A0 | 0.0% | Pending SHC_3BB0A8C1_0x004B65F0 | 0.0% | Pending -SHC_3BB0A8C1_0x004B6640 | 0.0% | Pending +SHC_3BB0A8C1_0x004B6640 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004B6680 | 0.0% | Pending +SHC_3BB0A8C1_0x004B6680 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004B66C0 | 0.0% | Pending @@ -27071,17 +27071,17 @@ SHC_3BB0A8C1_0x004B7530 | 0.0% | Pending SHC_3BB0A8C1_0x004B7600 | 0.0% | Pending -SHC_3BB0A8C1_0x004B7700 | 0.0% | Pending +SHC_3BB0A8C1_0x004B7700 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004B7730 | 0.0% | Pending SHC_3BB0A8C1_0x004B77A0 | 0.0% | Pending -SHC_3BB0A8C1_0x004B77E0 | 0.0% | Pending +SHC_3BB0A8C1_0x004B77E0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004B7800 | 0.0% | Pending -SHC_3BB0A8C1_0x004B7890 | 0.0% | Pending +SHC_3BB0A8C1_0x004B7890 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004B78D0 | 0.0% | Pending @@ -27097,19 +27097,19 @@ SHC_3BB0A8C1_0x004B7AF0 | 0.0% | Pending SHC_3BB0A8C1_0x004B7C90 | 0.0% | Pending -SHC_3BB0A8C1_0x004B7F60 | 0.0% | Pending +SHC_3BB0A8C1_0x004B7F60 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004B7FA0 | 0.0% | Pending SHC_3BB0A8C1_0x004B8000 | 0.0% | Pending -SHC_3BB0A8C1_0x004B8050 | 0.0% | Pending +SHC_3BB0A8C1_0x004B8050 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004B8080 | 0.0% | Pending -SHC_3BB0A8C1_0x004B8200 | 0.0% | Pending +SHC_3BB0A8C1_0x004B8200 | 50.0% | jump target differs -SHC_3BB0A8C1_0x004B8210 | 0.0% | Pending +SHC_3BB0A8C1_0x004B8210 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004B8220 | 0.0% | Pending @@ -27639,7 +27639,7 @@ SHC_3BB0A8C1_0x004B9528 | 0.0% | Pending SHC_3BB0A8C1_0x004B9530 | 0.0% | Pending -SHC_3BB0A8C1_0x004B9610 | 0.0% | Pending +SHC_3BB0A8C1_0x004B9610 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004B9620 | 0.0% | Pending @@ -29119,7 +29119,7 @@ SHC_3BB0A8C1_0x004BAEC0 | 0.0% | Pending SHC_3BB0A8C1_0x004BB010 | 0.0% | Pending -SHC_3BB0A8C1_0x004BB0B0 | 0.0% | Pending +SHC_3BB0A8C1_0x004BB0B0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004BB0D0 | 0.0% | Pending @@ -29287,11 +29287,11 @@ SHC_3BB0A8C1_0x004BB52C | 0.0% | Pending SHC_3BB0A8C1_0x004BB530 | 0.0% | Pending -SHC_3BB0A8C1_0x004BB540 | 0.0% | Pending +SHC_3BB0A8C1_0x004BB540 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004BB570 | 0.0% | Pending -SHC_3BB0A8C1_0x004BB650 | 0.0% | Pending +SHC_3BB0A8C1_0x004BB650 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004BB680 | 0.0% | Pending @@ -29315,9 +29315,9 @@ SHC_3BB0A8C1_0x004BB900 | 0.0% | Pending SHC_3BB0A8C1_0x004BB990 | 0.0% | Pending -SHC_3BB0A8C1_0x004BB9F0 | 0.0% | Pending +SHC_3BB0A8C1_0x004BB9F0 | 71.4% | jump target differs -SHC_3BB0A8C1_0x004BBA20 | 0.0% | Pending +SHC_3BB0A8C1_0x004BBA20 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004BBA30 | 0.0% | Pending @@ -30089,13 +30089,13 @@ SHC_3BB0A8C1_0x004BC620 | 0.0% | Pending SHC_3BB0A8C1_0x004BC630 | 0.0% | Pending -SHC_3BB0A8C1_0x004BC690 | 0.0% | Pending +SHC_3BB0A8C1_0x004BC690 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004BC6C0 | 0.0% | Pending SHC_3BB0A8C1_0x004BC6F0 | 0.0% | Pending -SHC_3BB0A8C1_0x004BC770 | 0.0% | Pending +SHC_3BB0A8C1_0x004BC770 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004BC790 | 0.0% | Pending @@ -30491,7 +30491,7 @@ SHC_3BB0A8C1_0x004BEA90 | 0.0% | Pending SHC_3BB0A8C1_0x004BEB20 | 0.0% | Pending -SHC_3BB0A8C1_0x004BEC10 | 0.0% | Pending +SHC_3BB0A8C1_0x004BEC10 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004BEC40 | 0.0% | Pending @@ -35833,7 +35833,7 @@ SHC_3BB0A8C1_0x004D6D14 | 0.0% | Pending SHC_3BB0A8C1_0x004D6D20 | 0.0% | Pending -SHC_3BB0A8C1_0x004D6EF0 | 0.0% | Pending +SHC_3BB0A8C1_0x004D6EF0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004D6F20 | 0.0% | Pending @@ -35999,7 +35999,7 @@ SHC_3BB0A8C1_0x004D8A18 | 0.0% | Pending SHC_3BB0A8C1_0x004D8A20 | 0.0% | Pending -SHC_3BB0A8C1_0x004D8AB0 | 0.0% | Pending +SHC_3BB0A8C1_0x004D8AB0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004D8AE0 | 0.0% | Pending @@ -36019,7 +36019,7 @@ SHC_3BB0A8C1_0x004D91D0 | 0.0% | Pending SHC_3BB0A8C1_0x004D9230 | 0.0% | Pending -SHC_3BB0A8C1_0x004D9270 | 0.0% | Pending +SHC_3BB0A8C1_0x004D9270 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004D9290 | 0.0% | Pending @@ -36027,7 +36027,7 @@ SHC_3BB0A8C1_0x004D9400 | 0.0% | Pending SHC_3BB0A8C1_0x004D9520 | 0.0% | Pending -SHC_3BB0A8C1_0x004D9700 | 0.0% | Pending +SHC_3BB0A8C1_0x004D9700 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004D9730 | 0.0% | Pending @@ -36053,9 +36053,9 @@ SHC_3BB0A8C1_0x004D9C10 | 0.0% | Pending SHC_3BB0A8C1_0x004D9CC0 | 0.0% | Pending -SHC_3BB0A8C1_0x004D9D60 | 0.0% | Pending +SHC_3BB0A8C1_0x004D9D60 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004D9D90 | 0.0% | Pending +SHC_3BB0A8C1_0x004D9D90 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004D9DB0 | 0.0% | Pending @@ -36135,7 +36135,7 @@ SHC_3BB0A8C1_0x004DA360 | 0.0% | Pending SHC_3BB0A8C1_0x004DA570 | 0.0% | Pending -SHC_3BB0A8C1_0x004DA640 | 0.0% | Pending +SHC_3BB0A8C1_0x004DA640 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004DA670 | 0.0% | Pending @@ -36145,15 +36145,15 @@ SHC_3BB0A8C1_0x004DA750 | 0.0% | Pending SHC_3BB0A8C1_0x004DA7A0 | 0.0% | Pending -SHC_3BB0A8C1_0x004DA7E0 | 0.0% | Pending +SHC_3BB0A8C1_0x004DA7E0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004DA810 | 0.0% | Pending +SHC_3BB0A8C1_0x004DA810 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004DA840 | 0.0% | Pending +SHC_3BB0A8C1_0x004DA840 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004DA870 | 0.0% | Pending +SHC_3BB0A8C1_0x004DA870 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004DA8A0 | 0.0% | Pending +SHC_3BB0A8C1_0x004DA8A0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004DA8D0 | 0.0% | Pending @@ -36171,7 +36171,7 @@ SHC_3BB0A8C1_0x004DAB80 | 0.0% | Pending SHC_3BB0A8C1_0x004DABB0 | 0.0% | Pending -SHC_3BB0A8C1_0x004DABF0 | 0.0% | Pending +SHC_3BB0A8C1_0x004DABF0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004DAC30 | 0.0% | Pending @@ -36257,7 +36257,7 @@ SHC_3BB0A8C1_0x004DC500 | 0.0% | Pending SHC_3BB0A8C1_0x004DC9E0 | 0.0% | Pending -SHC_3BB0A8C1_0x004DCC70 | 0.0% | Pending +SHC_3BB0A8C1_0x004DCC70 | 62.5% | jump target differs SHC_3BB0A8C1_0x004DCC90 | 0.0% | Pending @@ -36375,7 +36375,7 @@ SHC_3BB0A8C1_0x004E12C0 | 0.0% | Pending SHC_3BB0A8C1_0x004E1810 | 0.0% | Pending -SHC_3BB0A8C1_0x004E1A20 | 0.0% | Pending +SHC_3BB0A8C1_0x004E1A20 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004E1A50 | 0.0% | Pending @@ -36399,7 +36399,7 @@ SHC_3BB0A8C1_0x004E2460 | 0.0% | Pending SHC_3BB0A8C1_0x004E25A0 | 0.0% | Pending -SHC_3BB0A8C1_0x004E2600 | 0.0% | Pending +SHC_3BB0A8C1_0x004E2600 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004E2630 | 0.0% | Pending @@ -36985,7 +36985,7 @@ SHC_3BB0A8C1_0x004E66F0 | 0.0% | Pending SHC_3BB0A8C1_0x004E7770 | 0.0% | Pending -SHC_3BB0A8C1_0x004E7800 | 0.0% | Pending +SHC_3BB0A8C1_0x004E7800 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004E7810 | 0.0% | Pending @@ -37335,11 +37335,11 @@ SHC_3BB0A8C1_0x004E8C4C | 0.0% | Pending SHC_3BB0A8C1_0x004E8C50 | 0.0% | Pending -SHC_3BB0A8C1_0x004E8C90 | 0.0% | Pending +SHC_3BB0A8C1_0x004E8C90 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004E8CA0 | 0.0% | Pending +SHC_3BB0A8C1_0x004E8CA0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004E8CC0 | 0.0% | Pending +SHC_3BB0A8C1_0x004E8CC0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004E8CF0 | 0.0% | Pending @@ -38463,7 +38463,7 @@ SHC_3BB0A8C1_0x004F28E4 | 0.0% | Pending SHC_3BB0A8C1_0x004F28E8 | 0.0% | Pending -SHC_3BB0A8C1_0x004F28F0 | 0.0% | Pending +SHC_3BB0A8C1_0x004F28F0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004F2920 | 0.0% | Pending @@ -38561,9 +38561,9 @@ SHC_3BB0A8C1_0x004F2E00 | 0.0% | Pending SHC_3BB0A8C1_0x004F2E90 | 0.0% | Pending -SHC_3BB0A8C1_0x004F2FB0 | 0.0% | Pending +SHC_3BB0A8C1_0x004F2FB0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004F2FE0 | 0.0% | Pending +SHC_3BB0A8C1_0x004F2FE0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004F3010 | 0.0% | Pending @@ -38579,7 +38579,7 @@ SHC_3BB0A8C1_0x004F3560 | 0.0% | Pending SHC_3BB0A8C1_0x004F3610 | 0.0% | Pending -SHC_3BB0A8C1_0x004F3700 | 0.0% | Pending +SHC_3BB0A8C1_0x004F3700 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004F3730 | 0.0% | Pending @@ -38589,9 +38589,9 @@ SHC_3BB0A8C1_0x004F3840 | 0.0% | Pending SHC_3BB0A8C1_0x004F38A0 | 0.0% | Pending -SHC_3BB0A8C1_0x004F3900 | 0.0% | Pending +SHC_3BB0A8C1_0x004F3900 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004F3930 | 0.0% | Pending +SHC_3BB0A8C1_0x004F3930 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004F3960 | 0.0% | Pending @@ -38599,7 +38599,7 @@ SHC_3BB0A8C1_0x004F3B90 | 0.0% | Pending SHC_3BB0A8C1_0x004F3C50 | 0.0% | Pending -SHC_3BB0A8C1_0x004F3D30 | 0.0% | Pending +SHC_3BB0A8C1_0x004F3D30 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004F3D60 | 0.0% | Pending @@ -38633,9 +38633,9 @@ SHC_3BB0A8C1_0x004F4290 | 0.0% | Pending SHC_3BB0A8C1_0x004F49D0 | 0.0% | Pending -SHC_3BB0A8C1_0x004F4C30 | 0.0% | Pending +SHC_3BB0A8C1_0x004F4C30 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004F4C60 | 0.0% | Pending +SHC_3BB0A8C1_0x004F4C60 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004F4C80 | 0.0% | Pending @@ -38697,7 +38697,7 @@ SHC_3BB0A8C1_0x004F6460 | 0.0% | Pending SHC_3BB0A8C1_0x004F6464 | 0.0% | Pending -SHC_3BB0A8C1_0x004F6470 | 0.0% | Pending +SHC_3BB0A8C1_0x004F6470 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004F64A0 | 0.0% | Pending @@ -38733,9 +38733,9 @@ SHC_3BB0A8C1_0x004F69D0 | 0.0% | Pending SHC_3BB0A8C1_0x004F6A20 | 0.0% | Pending -SHC_3BB0A8C1_0x004F6A60 | 0.0% | Pending +SHC_3BB0A8C1_0x004F6A60 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004F6A70 | 0.0% | Pending +SHC_3BB0A8C1_0x004F6A70 | 50.0% | jump target differs SHC_3BB0A8C1_0x004F6A80 | 0.0% | Pending @@ -38755,11 +38755,11 @@ SHC_3BB0A8C1_0x004F6F90 | 0.0% | Pending SHC_3BB0A8C1_0x004F6FD0 | 0.0% | Pending -SHC_3BB0A8C1_0x004F70B0 | 0.0% | Pending +SHC_3BB0A8C1_0x004F70B0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004F70D0 | 0.0% | Pending -SHC_3BB0A8C1_0x004F70E0 | 0.0% | Pending +SHC_3BB0A8C1_0x004F70E0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004F70F0 | 0.0% | Pending @@ -41419,19 +41419,19 @@ SHC_3BB0A8C1_0x00500090 | 0.0% | Pending SHC_3BB0A8C1_0x00500091 | 0.0% | Pending -SHC_3BB0A8C1_0x005000A0 | 0.0% | Pending +SHC_3BB0A8C1_0x005000A0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x005000E0 | 0.0% | Pending SHC_3BB0A8C1_0x00500180 | 0.0% | Pending -SHC_3BB0A8C1_0x00500210 | 0.0% | Pending +SHC_3BB0A8C1_0x00500210 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00500250 | 0.0% | Pending SHC_3BB0A8C1_0x00500290 | 0.0% | Pending -SHC_3BB0A8C1_0x005002D0 | 0.0% | Pending +SHC_3BB0A8C1_0x005002D0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00500310 | 0.0% | Pending @@ -41443,19 +41443,19 @@ SHC_3BB0A8C1_0x00500500 | 0.0% | Pending SHC_3BB0A8C1_0x005005F0 | 0.0% | Pending -SHC_3BB0A8C1_0x00500640 | 0.0% | Pending +SHC_3BB0A8C1_0x00500640 | 46.2% | instruction selection differs -SHC_3BB0A8C1_0x00500680 | 0.0% | Pending +SHC_3BB0A8C1_0x00500680 | 100.0% | Reimplemented SHC_3BB0A8C1_0x005006C0 | 0.0% | Pending -SHC_3BB0A8C1_0x00500720 | 0.0% | Pending +SHC_3BB0A8C1_0x00500720 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00500750 | 0.0% | Pending +SHC_3BB0A8C1_0x00500750 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00500790 | 0.0% | Pending -SHC_3BB0A8C1_0x005007D0 | 0.0% | Pending +SHC_3BB0A8C1_0x005007D0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00500800 | 0.0% | Pending @@ -41473,13 +41473,13 @@ SHC_3BB0A8C1_0x00500BB0 | 0.0% | Pending SHC_3BB0A8C1_0x00500C20 | 0.0% | Pending -SHC_3BB0A8C1_0x00500C80 | 0.0% | Pending +SHC_3BB0A8C1_0x00500C80 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00500CB0 | 0.0% | Pending SHC_3BB0A8C1_0x00500CF0 | 0.0% | Pending -SHC_3BB0A8C1_0x00500D30 | 0.0% | Pending +SHC_3BB0A8C1_0x00500D30 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00500D60 | 0.0% | Pending @@ -41503,19 +41503,19 @@ SHC_3BB0A8C1_0x005010B8 | 0.0% | Pending SHC_3BB0A8C1_0x005010BC | 0.0% | Pending -SHC_3BB0A8C1_0x005010C0 | 0.0% | Pending +SHC_3BB0A8C1_0x005010C0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x005010D0 | 0.0% | Pending -SHC_3BB0A8C1_0x005010E0 | 0.0% | Pending +SHC_3BB0A8C1_0x005010E0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00501110 | 0.0% | Pending -SHC_3BB0A8C1_0x00501180 | 0.0% | Pending +SHC_3BB0A8C1_0x00501180 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x005011A0 | 0.0% | Pending +SHC_3BB0A8C1_0x005011A0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x005011C0 | 0.0% | Pending +SHC_3BB0A8C1_0x005011C0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x005011F0 | 0.0% | Pending @@ -41535,11 +41535,11 @@ SHC_3BB0A8C1_0x005016D0 | 0.0% | Pending SHC_3BB0A8C1_0x005016E0 | 0.0% | Pending -SHC_3BB0A8C1_0x00501730 | 0.0% | Pending +SHC_3BB0A8C1_0x00501730 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00501760 | 0.0% | Pending -SHC_3BB0A8C1_0x005017A0 | 0.0% | Pending +SHC_3BB0A8C1_0x005017A0 | 80.0% | jump target differs SHC_3BB0A8C1_0x005017C0 | 0.0% | Pending @@ -42067,7 +42067,7 @@ SHC_3BB0A8C1_0x00504ED0 | 0.0% | Pending SHC_3BB0A8C1_0x00504ED1 | 0.0% | Pending -SHC_3BB0A8C1_0x00504EE0 | 0.0% | Pending +SHC_3BB0A8C1_0x00504EE0 | 38.5% | instruction selection differs SHC_3BB0A8C1_0x00504F10 | 0.0% | Pending @@ -44739,7 +44739,7 @@ SHC_3BB0A8C1_0x005127B0 | 0.0% | Pending SHC_3BB0A8C1_0x005127D0 | 0.0% | Pending -SHC_3BB0A8C1_0x00512920 | 0.0% | Pending +SHC_3BB0A8C1_0x00512920 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00512940 | 0.0% | Pending @@ -45743,7 +45743,7 @@ SHC_3BB0A8C1_0x00518180 | 0.0% | Pending SHC_3BB0A8C1_0x005182A0 | 0.0% | Pending -SHC_3BB0A8C1_0x00518350 | 0.0% | Pending +SHC_3BB0A8C1_0x00518350 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00518380 | 0.0% | Pending @@ -45773,7 +45773,7 @@ SHC_3BB0A8C1_0x00519850 | 0.0% | Pending SHC_3BB0A8C1_0x005198C0 | 0.0% | Pending -SHC_3BB0A8C1_0x00519960 | 0.0% | Pending +SHC_3BB0A8C1_0x00519960 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00519990 | 0.0% | Pending @@ -45839,9 +45839,9 @@ SHC_3BB0A8C1_0x0051AB60 | 0.0% | Pending SHC_3BB0A8C1_0x0051ABB0 | 0.0% | Pending -SHC_3BB0A8C1_0x0051AC80 | 0.0% | Pending +SHC_3BB0A8C1_0x0051AC80 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0051ACB0 | 0.0% | Pending +SHC_3BB0A8C1_0x0051ACB0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0051ACE0 | 0.0% | Pending @@ -45879,7 +45879,7 @@ SHC_3BB0A8C1_0x0051B420 | 0.0% | Pending SHC_3BB0A8C1_0x0051B570 | 0.0% | Pending -SHC_3BB0A8C1_0x0051B680 | 0.0% | Pending +SHC_3BB0A8C1_0x0051B680 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0051B690 | 0.0% | Pending @@ -46161,7 +46161,7 @@ SHC_3BB0A8C1_0x0051D5D0 | 0.0% | Pending SHC_3BB0A8C1_0x0051D5E0 | 0.0% | Pending -SHC_3BB0A8C1_0x0051D680 | 0.0% | Pending +SHC_3BB0A8C1_0x0051D680 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0051D690 | 0.0% | Pending @@ -46379,11 +46379,11 @@ SHC_3BB0A8C1_0x00520CD0 | 0.0% | Pending SHC_3BB0A8C1_0x00520F70 | 0.0% | Pending -SHC_3BB0A8C1_0x00521180 | 0.0% | Pending +SHC_3BB0A8C1_0x00521180 | 100.0% | Reimplemented SHC_3BB0A8C1_0x005211B0 | 0.0% | Pending -SHC_3BB0A8C1_0x00521210 | 0.0% | Pending +SHC_3BB0A8C1_0x00521210 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00521240 | 0.0% | Pending @@ -46633,7 +46633,7 @@ SHC_3BB0A8C1_0x00521EA5 | 0.0% | Pending SHC_3BB0A8C1_0x00521EA6 | 0.0% | Pending -SHC_3BB0A8C1_0x00521EB0 | 0.0% | Pending +SHC_3BB0A8C1_0x00521EB0 | 76.5% | instruction selection differs SHC_3BB0A8C1_0x00521EF0 | 0.0% | Pending @@ -46765,11 +46765,11 @@ SHC_3BB0A8C1_0x00522083 | 0.0% | Pending SHC_3BB0A8C1_0x00522090 | 0.0% | Pending -SHC_3BB0A8C1_0x00522110 | 0.0% | Pending +SHC_3BB0A8C1_0x00522110 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00522150 | 0.0% | Pending +SHC_3BB0A8C1_0x00522150 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00522160 | 0.0% | Pending +SHC_3BB0A8C1_0x00522160 | 100.0% | Reimplemented SHC_3BB0A8C1_0x005221A0 | 0.0% | Pending @@ -46779,15 +46779,15 @@ SHC_3BB0A8C1_0x00522210 | 0.0% | Pending SHC_3BB0A8C1_0x005222B0 | 0.0% | Pending -SHC_3BB0A8C1_0x00522360 | 0.0% | Pending +SHC_3BB0A8C1_0x00522360 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00522390 | 0.0% | Pending SHC_3BB0A8C1_0x00522410 | 0.0% | Pending -SHC_3BB0A8C1_0x005224E0 | 0.0% | Pending +SHC_3BB0A8C1_0x005224E0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00522520 | 0.0% | Pending +SHC_3BB0A8C1_0x00522520 | 89.7% | instruction selection differs SHC_3BB0A8C1_0x00522550 | 0.0% | Pending @@ -46807,11 +46807,11 @@ SHC_3BB0A8C1_0x005229C0 | 0.0% | Pending SHC_3BB0A8C1_0x00522B00 | 0.0% | Pending -SHC_3BB0A8C1_0x00522BC0 | 0.0% | Pending +SHC_3BB0A8C1_0x00522BC0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00522BF0 | 0.0% | Pending +SHC_3BB0A8C1_0x00522BF0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00522C20 | 0.0% | Pending +SHC_3BB0A8C1_0x00522C20 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00522C50 | 0.0% | Pending @@ -46833,13 +46833,13 @@ SHC_3BB0A8C1_0x005232E0 | 0.0% | Pending SHC_3BB0A8C1_0x005232F0 | 0.0% | Pending -SHC_3BB0A8C1_0x00523340 | 0.0% | Pending +SHC_3BB0A8C1_0x00523340 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00523370 | 0.0% | Pending +SHC_3BB0A8C1_0x00523370 | 100.0% | Reimplemented SHC_3BB0A8C1_0x005233A0 | 0.0% | Pending -SHC_3BB0A8C1_0x005233E0 | 0.0% | Pending +SHC_3BB0A8C1_0x005233E0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00523410 | 0.0% | Pending @@ -46851,7 +46851,7 @@ SHC_3BB0A8C1_0x00523630 | 0.0% | Pending SHC_3BB0A8C1_0x005236A0 | 0.0% | Pending -SHC_3BB0A8C1_0x00523730 | 0.0% | Pending +SHC_3BB0A8C1_0x00523730 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00523750 | 0.0% | Pending @@ -46865,11 +46865,11 @@ SHC_3BB0A8C1_0x00523A30 | 0.0% | Pending SHC_3BB0A8C1_0x00523B00 | 0.0% | Pending -SHC_3BB0A8C1_0x00523E00 | 0.0% | Pending +SHC_3BB0A8C1_0x00523E00 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00523E30 | 0.0% | Pending -SHC_3BB0A8C1_0x00523EB0 | 0.0% | Pending +SHC_3BB0A8C1_0x00523EB0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00523EF0 | 0.0% | Pending @@ -46917,7 +46917,7 @@ SHC_3BB0A8C1_0x00524EF0 | 0.0% | Pending SHC_3BB0A8C1_0x00525060 | 0.0% | Pending -SHC_3BB0A8C1_0x00525090 | 0.0% | Pending +SHC_3BB0A8C1_0x00525090 | 100.0% | Reimplemented SHC_3BB0A8C1_0x005250B0 | 0.0% | Pending @@ -46947,7 +46947,7 @@ SHC_3BB0A8C1_0x00525970 | 0.0% | Pending SHC_3BB0A8C1_0x00525A70 | 0.0% | Pending -SHC_3BB0A8C1_0x00525B70 | 0.0% | Pending +SHC_3BB0A8C1_0x00525B70 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00525BA0 | 0.0% | Pending @@ -46959,7 +46959,7 @@ SHC_3BB0A8C1_0x005261B0 | 0.0% | Pending SHC_3BB0A8C1_0x005262A0 | 0.0% | Pending -SHC_3BB0A8C1_0x00526370 | 0.0% | Pending +SHC_3BB0A8C1_0x00526370 | 100.0% | Reimplemented SHC_3BB0A8C1_0x005263A0 | 0.0% | Pending @@ -49233,7 +49233,7 @@ SHC_3BB0A8C1_0x0052B9E4 | 0.0% | Pending SHC_3BB0A8C1_0x0052B9E8 | 0.0% | Pending -SHC_3BB0A8C1_0x0052B9F0 | 0.0% | Pending +SHC_3BB0A8C1_0x0052B9F0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0052BA10 | 0.0% | Pending @@ -49317,9 +49317,9 @@ SHC_3BB0A8C1_0x0052EED0 | 0.0% | Pending SHC_3BB0A8C1_0x0052F010 | 0.0% | Pending -SHC_3BB0A8C1_0x0052F070 | 0.0% | Pending +SHC_3BB0A8C1_0x0052F070 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0052F0A0 | 0.0% | Pending +SHC_3BB0A8C1_0x0052F0A0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0052F0D0 | 0.0% | Pending @@ -49345,9 +49345,9 @@ SHC_3BB0A8C1_0x0052F730 | 0.0% | Pending SHC_3BB0A8C1_0x0052F7E0 | 0.0% | Pending -SHC_3BB0A8C1_0x0052FBB0 | 0.0% | Pending +SHC_3BB0A8C1_0x0052FBB0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0052FBF0 | 0.0% | Pending +SHC_3BB0A8C1_0x0052FBF0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0052FC30 | 0.0% | Pending @@ -49361,7 +49361,7 @@ SHC_3BB0A8C1_0x0052FE90 | 0.0% | Pending SHC_3BB0A8C1_0x0052FF80 | 0.0% | Pending -SHC_3BB0A8C1_0x00530080 | 0.0% | Pending +SHC_3BB0A8C1_0x00530080 | 100.0% | Reimplemented SHC_3BB0A8C1_0x005300B0 | 0.0% | Pending @@ -49649,7 +49649,7 @@ SHC_3BB0A8C1_0x00530C40 | 0.0% | Pending SHC_3BB0A8C1_0x00530CF0 | 0.0% | Pending -SHC_3BB0A8C1_0x00530D50 | 0.0% | Pending +SHC_3BB0A8C1_0x00530D50 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00530D70 | 0.0% | Pending @@ -49659,11 +49659,11 @@ SHC_3BB0A8C1_0x00530EB0 | 0.0% | Pending SHC_3BB0A8C1_0x00530F20 | 0.0% | Pending -SHC_3BB0A8C1_0x00530FD0 | 0.0% | Pending +SHC_3BB0A8C1_0x00530FD0 | 78.3% | instruction selection differs SHC_3BB0A8C1_0x00531000 | 0.0% | Pending -SHC_3BB0A8C1_0x005311F0 | 0.0% | Pending +SHC_3BB0A8C1_0x005311F0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00531220 | 0.0% | Pending @@ -50643,7 +50643,7 @@ SHC_3BB0A8C1_0x00532F5D | 0.0% | Pending SHC_3BB0A8C1_0x00532F5E | 0.0% | Pending -SHC_3BB0A8C1_0x00532F60 | 0.0% | Pending +SHC_3BB0A8C1_0x00532F60 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00532F80 | 0.0% | Pending @@ -50677,19 +50677,19 @@ SHC_3BB0A8C1_0x00533630 | 0.0% | Pending SHC_3BB0A8C1_0x00533810 | 0.0% | Pending -SHC_3BB0A8C1_0x00533920 | 0.0% | Pending +SHC_3BB0A8C1_0x00533920 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00533960 | 0.0% | Pending SHC_3BB0A8C1_0x005339A0 | 0.0% | Pending -SHC_3BB0A8C1_0x005339F0 | 0.0% | Pending +SHC_3BB0A8C1_0x005339F0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00533A10 | 0.0% | Pending SHC_3BB0A8C1_0x00533B30 | 0.0% | Pending -SHC_3BB0A8C1_0x00533C70 | 0.0% | Pending +SHC_3BB0A8C1_0x00533C70 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00533CA0 | 0.0% | Pending @@ -50777,7 +50777,7 @@ SHC_3BB0A8C1_0x00533F84 | 0.0% | Pending SHC_3BB0A8C1_0x00533F85 | 0.0% | Pending -SHC_3BB0A8C1_0x00533F90 | 0.0% | Pending +SHC_3BB0A8C1_0x00533F90 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00533FC0 | 0.0% | Pending @@ -50809,7 +50809,7 @@ SHC_3BB0A8C1_0x005343C0 | 0.0% | Pending SHC_3BB0A8C1_0x005343F0 | 0.0% | Pending -SHC_3BB0A8C1_0x00534460 | 0.0% | Pending +SHC_3BB0A8C1_0x00534460 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00534490 | 0.0% | Pending @@ -50857,7 +50857,7 @@ SHC_3BB0A8C1_0x005350B0 | 0.0% | Pending SHC_3BB0A8C1_0x00535150 | 0.0% | Pending -SHC_3BB0A8C1_0x00535190 | 0.0% | Pending +SHC_3BB0A8C1_0x00535190 | 100.0% | Reimplemented SHC_3BB0A8C1_0x005351C0 | 0.0% | Pending @@ -51065,11 +51065,11 @@ SHC_3BB0A8C1_0x00535513 | 0.0% | Pending SHC_3BB0A8C1_0x00535514 | 0.0% | Pending -SHC_3BB0A8C1_0x00535520 | 0.0% | Pending +SHC_3BB0A8C1_0x00535520 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00535550 | 0.0% | Pending +SHC_3BB0A8C1_0x00535550 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00535560 | 0.0% | Pending +SHC_3BB0A8C1_0x00535560 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00535580 | 0.0% | Pending @@ -51077,15 +51077,15 @@ SHC_3BB0A8C1_0x005355E0 | 0.0% | Pending SHC_3BB0A8C1_0x00535680 | 0.0% | Pending -SHC_3BB0A8C1_0x00535700 | 0.0% | Pending +SHC_3BB0A8C1_0x00535700 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00535730 | 0.0% | Pending SHC_3BB0A8C1_0x005357E0 | 0.0% | Pending -SHC_3BB0A8C1_0x00535810 | 0.0% | Pending +SHC_3BB0A8C1_0x00535810 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00535840 | 0.0% | Pending +SHC_3BB0A8C1_0x00535840 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00535870 | 0.0% | Pending @@ -51103,7 +51103,7 @@ SHC_3BB0A8C1_0x00535B00 | 0.0% | Pending SHC_3BB0A8C1_0x00535BC0 | 0.0% | Pending -SHC_3BB0A8C1_0x00535DF0 | 0.0% | Pending +SHC_3BB0A8C1_0x00535DF0 | 85.7% | jump target differs SHC_3BB0A8C1_0x00535E20 | 0.0% | Pending @@ -51205,9 +51205,9 @@ SHC_3BB0A8C1_0x00536A60 | 0.0% | Pending SHC_3BB0A8C1_0x00536C70 | 0.0% | Pending -SHC_3BB0A8C1_0x00536C90 | 0.0% | Pending +SHC_3BB0A8C1_0x00536C90 | 83.3% | jump target differs -SHC_3BB0A8C1_0x00536CC0 | 0.0% | Pending +SHC_3BB0A8C1_0x00536CC0 | 83.3% | jump target differs SHC_3BB0A8C1_0x00536CF0 | 0.0% | Pending @@ -51221,17 +51221,17 @@ SHC_3BB0A8C1_0x00536E30 | 0.0% | Pending SHC_3BB0A8C1_0x00537070 | 0.0% | Pending -SHC_3BB0A8C1_0x005370C0 | 0.0% | Pending +SHC_3BB0A8C1_0x005370C0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00537100 | 0.0% | Pending +SHC_3BB0A8C1_0x00537100 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00537130 | 0.0% | Pending +SHC_3BB0A8C1_0x00537130 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00537160 | 0.0% | Pending +SHC_3BB0A8C1_0x00537160 | 100.0% | Reimplemented SHC_3BB0A8C1_0x005371A0 | 0.0% | Pending -SHC_3BB0A8C1_0x005371E0 | 0.0% | Pending +SHC_3BB0A8C1_0x005371E0 | 50.0% | jump target differs SHC_3BB0A8C1_0x005371F0 | 0.0% | Pending @@ -59625,9 +59625,9 @@ SHC_3BB0A8C1_0x0053B210 | 0.0% | Pending SHC_3BB0A8C1_0x0053B260 | 0.0% | Pending -SHC_3BB0A8C1_0x0053B310 | 0.0% | Pending +SHC_3BB0A8C1_0x0053B310 | 90.0% | register allocation differs -SHC_3BB0A8C1_0x0053B340 | 0.0% | Pending +SHC_3BB0A8C1_0x0053B340 | 53.3% | instruction selection differs SHC_3BB0A8C1_0x0053B380 | 0.0% | Pending @@ -59637,25 +59637,25 @@ SHC_3BB0A8C1_0x0053B3E0 | 0.0% | Pending SHC_3BB0A8C1_0x0053B4F0 | 0.0% | Pending -SHC_3BB0A8C1_0x0053B530 | 0.0% | Pending +SHC_3BB0A8C1_0x0053B530 | 92.3% | register allocation differs -SHC_3BB0A8C1_0x0053B570 | 0.0% | Pending +SHC_3BB0A8C1_0x0053B570 | 90.0% | register allocation differs SHC_3BB0A8C1_0x0053B5A0 | 0.0% | Pending -SHC_3BB0A8C1_0x0053B5E0 | 0.0% | Pending +SHC_3BB0A8C1_0x0053B5E0 | 90.0% | register allocation differs SHC_3BB0A8C1_0x0053B610 | 0.0% | Pending SHC_3BB0A8C1_0x0053B800 | 0.0% | Pending -SHC_3BB0A8C1_0x0053B8B0 | 0.0% | Pending +SHC_3BB0A8C1_0x0053B8B0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0053B8E0 | 0.0% | Pending SHC_3BB0A8C1_0x0053BB10 | 0.0% | Pending -SHC_3BB0A8C1_0x0053BB70 | 0.0% | Pending +SHC_3BB0A8C1_0x0053BB70 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0053BB90 | 0.0% | Pending @@ -59669,7 +59669,7 @@ SHC_3BB0A8C1_0x0053C400 | 0.0% | Pending SHC_3BB0A8C1_0x0053C590 | 0.0% | Pending -SHC_3BB0A8C1_0x0053CAC0 | 0.0% | Pending +SHC_3BB0A8C1_0x0053CAC0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0053CAE0 | 0.0% | Pending @@ -60095,7 +60095,7 @@ SHC_3BB0A8C1_0x0053E820 | 0.0% | Pending SHC_3BB0A8C1_0x0053E870 | 0.0% | Pending -SHC_3BB0A8C1_0x0053E8D0 | 0.0% | Pending +SHC_3BB0A8C1_0x0053E8D0 | 90.0% | jump target differs SHC_3BB0A8C1_0x0053E900 | 0.0% | Pending @@ -68321,7 +68321,7 @@ SHC_3BB0A8C1_0x00584001 | 0.0% | Pending SHC_3BB0A8C1_0x0058401B | 0.0% | Pending -SHC_3BB0A8C1_0x00584026 | 0.0% | Pending +SHC_3BB0A8C1_0x00584026 | 0.0% | instruction selection differs SHC_3BB0A8C1_0x00584030 | 0.0% | Pending From 0147370b0091f6b478360e2ebe8eda6f718ad3af Mon Sep 17 00:00:00 2001 From: Gynt Date: Tue, 29 Sep 2026 15:30:10 +0200 Subject: [PATCH 225/241] reimplement: SHC_3BB0A8C1_0x0053B340 81.82% Store sched + jne vs jl --- src/OpenSHC/Map/Version/UpgradeMapUnitsTo_112.cpp | 3 +-- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_112.cpp b/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_112.cpp index 61e66be18..39850f40b 100644 --- a/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_112.cpp +++ b/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_112.cpp @@ -15,8 +15,7 @@ namespace Map { void Version::UpgradeMapUnitsTo_112() { DAT_CurrentUnitSlotID::instance = 2500; - // fixme: the reimplementation unrolls this loop three times (2499 = 3 * 833), the original does not - for (int unitID = 1; unitID < 2500; ++unitID) { + for (int unitID = 1; unitID != 2500; ++unitID) { if (DAT_UnitsState::instance.units[unitID].logicalState == Units::ULS_NORMAL) { DAT_UnitsState::instance.units[unitID].buildingID = DAT_UnitsState::instance.units[unitID].workplaceBuildingID_1; diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 96be0a28a..651a82db7 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -59627,7 +59627,7 @@ SHC_3BB0A8C1_0x0053B260 | 0.0% | Pending SHC_3BB0A8C1_0x0053B310 | 90.0% | register allocation differs -SHC_3BB0A8C1_0x0053B340 | 53.3% | instruction selection differs +SHC_3BB0A8C1_0x0053B340 | 81.8% | Store sched + jne vs jl SHC_3BB0A8C1_0x0053B380 | 0.0% | Pending From 7980149990f571d621de4bff5da1371c6bf1f444 Mon Sep 17 00:00:00 2001 From: Gynt Date: Tue, 29 Sep 2026 15:31:51 +0200 Subject: [PATCH 226/241] status: record measured progress for this branch's 45 partial functions Re-measured all 45 functions this branch added that were recorded below 100%, with the Globals struct resolvers active. 31 are at normalized 100% -- only call and tail-jump targets differ -- which the project records as 100% Reimplemented. Two of those were recorded as 0.0%; both are single-instruction tail-call thunks whose one instruction is the jump. The remaining 14 carry the reason the diff actually shows instead of the generic "jump target differs" / "instruction selection differs". Most are register allocation or instruction scheduling, which is not reachable from the source. Co-Authored-By: Claude Opus 5 --- status/addresses-SHC-3BB0A8C1.txt | 90 +++++++++++++++---------------- 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 651a82db7..54c16b5fb 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -539,7 +539,7 @@ SHC_3BB0A8C1_0x00403900 | 0.0% | Pending SHC_3BB0A8C1_0x00403980 | 0.0% | Pending -SHC_3BB0A8C1_0x004039B0 | 36.4% | instruction selection differs +SHC_3BB0A8C1_0x004039B0 | 36.4% | register alloc + arg scheduling SHC_3BB0A8C1_0x004039F0 | 100.0% | Reimplemented @@ -6793,7 +6793,7 @@ SHC_3BB0A8C1_0x00426D30 | 0.0% | Pending SHC_3BB0A8C1_0x00426ED0 | 0.0% | Pending -SHC_3BB0A8C1_0x00426F80 | 70.0% | instruction selection differs +SHC_3BB0A8C1_0x00426F80 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00426FB0 | 0.0% | Pending @@ -7443,7 +7443,7 @@ SHC_3BB0A8C1_0x0042B960 | 0.0% | Pending SHC_3BB0A8C1_0x0042BA50 | 0.0% | Pending -SHC_3BB0A8C1_0x0042BB70 | 71.4% | instruction selection differs +SHC_3BB0A8C1_0x0042BB70 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0042BB90 | 0.0% | Pending @@ -7453,7 +7453,7 @@ SHC_3BB0A8C1_0x0042BF00 | 0.0% | Pending SHC_3BB0A8C1_0x0042BFC0 | 0.0% | Pending -SHC_3BB0A8C1_0x0042C060 | 87.5% | jump target differs +SHC_3BB0A8C1_0x0042C060 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0042C090 | 0.0% | Pending @@ -8741,7 +8741,7 @@ SHC_3BB0A8C1_0x0042F3BC | 0.0% | Pending SHC_3BB0A8C1_0x0042F3C0 | 0.0% | Pending -SHC_3BB0A8C1_0x0042F3D0 | 60.0% | instruction selection differs +SHC_3BB0A8C1_0x0042F3D0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0042F3F0 | 0.0% | Pending @@ -11135,7 +11135,7 @@ SHC_3BB0A8C1_0x00434224 | 0.0% | Pending SHC_3BB0A8C1_0x00434228 | 0.0% | Pending -SHC_3BB0A8C1_0x00434230 | 88.9% | jump target differs +SHC_3BB0A8C1_0x00434230 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00434260 | 100.0% | Reimplemented @@ -13397,11 +13397,11 @@ SHC_3BB0A8C1_0x0043A850 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0043A860 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0043A880 | 90.9% | jump target differs +SHC_3BB0A8C1_0x0043A880 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0043A8C0 | 75.0% | jump target differs +SHC_3BB0A8C1_0x0043A8C0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0043A8D0 | 50.0% | jump target differs +SHC_3BB0A8C1_0x0043A8D0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0043A8E0 | 0.0% | Pending @@ -13597,7 +13597,7 @@ SHC_3BB0A8C1_0x0043E6C0 | 0.0% | Pending SHC_3BB0A8C1_0x0043F2B0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0043F2C0 | 87.5% | jump target differs +SHC_3BB0A8C1_0x0043F2C0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0043F2F0 | 0.0% | Pending @@ -13613,7 +13613,7 @@ SHC_3BB0A8C1_0x0043FBF0 | 0.0% | Pending SHC_3BB0A8C1_0x0043FC80 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x0043FCA0 | 0.0% | jump target differs +SHC_3BB0A8C1_0x0043FCA0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0043FCB0 | 0.0% | Pending @@ -13631,9 +13631,9 @@ SHC_3BB0A8C1_0x00440280 | 0.0% | Pending SHC_3BB0A8C1_0x00440360 | 0.0% | Pending -SHC_3BB0A8C1_0x004403D0 | 88.9% | jump target differs +SHC_3BB0A8C1_0x004403D0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00440400 | 50.0% | jump target differs +SHC_3BB0A8C1_0x00440400 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00440410 | 100.0% | Reimplemented @@ -16987,7 +16987,7 @@ SHC_3BB0A8C1_0x00454960 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00454990 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004549C0 | 40.0% | instruction selection differs +SHC_3BB0A8C1_0x004549C0 | 40.0% | register allocation differs SHC_3BB0A8C1_0x004549F0 | 0.0% | Pending @@ -18041,7 +18041,7 @@ SHC_3BB0A8C1_0x0045B4A0 | 0.0% | Pending SHC_3BB0A8C1_0x0045B6B0 | 0.0% | Pending -SHC_3BB0A8C1_0x0045B7F0 | 63.2% | instruction selection differs +SHC_3BB0A8C1_0x0045B7F0 | 63.2% | register allocation differs SHC_3BB0A8C1_0x0045B830 | 0.0% | Pending @@ -18747,7 +18747,7 @@ SHC_3BB0A8C1_0x0045F0CD | 0.0% | Pending SHC_3BB0A8C1_0x0045F0D0 | 0.0% | Pending -SHC_3BB0A8C1_0x0045F120 | 75.0% | jump target differs +SHC_3BB0A8C1_0x0045F120 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0045F130 | 0.0% | Pending @@ -19929,7 +19929,7 @@ SHC_3BB0A8C1_0x00465F20 | 0.0% | Pending SHC_3BB0A8C1_0x00465F90 | 0.0% | Pending -SHC_3BB0A8C1_0x004660B0 | 81.8% | jump target differs +SHC_3BB0A8C1_0x004660B0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004660F0 | 0.0% | Pending @@ -23373,7 +23373,7 @@ SHC_3BB0A8C1_0x00490060 | 0.0% | Pending SHC_3BB0A8C1_0x00490080 | 0.0% | Pending -SHC_3BB0A8C1_0x00490340 | 94.4% | jump target differs +SHC_3BB0A8C1_0x00490340 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00490380 | 0.0% | Pending @@ -24041,7 +24041,7 @@ SHC_3BB0A8C1_0x004941E7 | 0.0% | Pending SHC_3BB0A8C1_0x004941E8 | 0.0% | Pending -SHC_3BB0A8C1_0x004941F0 | 80.0% | jump target differs +SHC_3BB0A8C1_0x004941F0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00494210 | 0.0% | Pending @@ -24111,7 +24111,7 @@ SHC_3BB0A8C1_0x004948BF | 0.0% | Pending SHC_3BB0A8C1_0x004948C0 | 0.0% | Pending -SHC_3BB0A8C1_0x00494920 | 85.7% | jump target differs +SHC_3BB0A8C1_0x00494920 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00494950 | 0.0% | Pending @@ -24213,7 +24213,7 @@ SHC_3BB0A8C1_0x00495230 | 0.0% | Pending SHC_3BB0A8C1_0x004954A0 | 0.0% | Pending -SHC_3BB0A8C1_0x00495800 | 83.3% | jump target differs +SHC_3BB0A8C1_0x00495800 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00495840 | 100.0% | Reimplemented @@ -25535,7 +25535,7 @@ SHC_3BB0A8C1_0x004AAB00 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004AAB20 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004AAB40 | 50.0% | jump target differs +SHC_3BB0A8C1_0x004AAB40 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004AAB50 | 0.0% | Pending @@ -25623,7 +25623,7 @@ SHC_3BB0A8C1_0x004ABCB0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004ABCE0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004ABD10 | 0.0% | jump target differs +SHC_3BB0A8C1_0x004ABD10 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004ABD20 | 0.0% | Pending @@ -26001,7 +26001,7 @@ SHC_3BB0A8C1_0x004B1E60 | 0.0% | Pending SHC_3BB0A8C1_0x004B1EB0 | 0.0% | Pending -SHC_3BB0A8C1_0x004B20B0 | 67.6% | instruction selection differs +SHC_3BB0A8C1_0x004B20B0 | 67.6% | equal arms merged by MSVC SHC_3BB0A8C1_0x004B2280 | 0.0% | Pending @@ -26905,7 +26905,7 @@ SHC_3BB0A8C1_0x004B6480 | 0.0% | Pending SHC_3BB0A8C1_0x004B64D0 | 0.0% | Pending -SHC_3BB0A8C1_0x004B6500 | 87.5% | jump target differs +SHC_3BB0A8C1_0x004B6500 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004B6530 | 0.0% | Pending @@ -27107,7 +27107,7 @@ SHC_3BB0A8C1_0x004B8050 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004B8080 | 0.0% | Pending -SHC_3BB0A8C1_0x004B8200 | 50.0% | jump target differs +SHC_3BB0A8C1_0x004B8200 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004B8210 | 100.0% | Reimplemented @@ -29315,7 +29315,7 @@ SHC_3BB0A8C1_0x004BB900 | 0.0% | Pending SHC_3BB0A8C1_0x004BB990 | 0.0% | Pending -SHC_3BB0A8C1_0x004BB9F0 | 71.4% | jump target differs +SHC_3BB0A8C1_0x004BB9F0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004BBA20 | 100.0% | Reimplemented @@ -36257,7 +36257,7 @@ SHC_3BB0A8C1_0x004DC500 | 0.0% | Pending SHC_3BB0A8C1_0x004DC9E0 | 0.0% | Pending -SHC_3BB0A8C1_0x004DCC70 | 62.5% | jump target differs +SHC_3BB0A8C1_0x004DCC70 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004DCC90 | 0.0% | Pending @@ -38735,7 +38735,7 @@ SHC_3BB0A8C1_0x004F6A20 | 0.0% | Pending SHC_3BB0A8C1_0x004F6A60 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004F6A70 | 50.0% | jump target differs +SHC_3BB0A8C1_0x004F6A70 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004F6A80 | 0.0% | Pending @@ -41443,7 +41443,7 @@ SHC_3BB0A8C1_0x00500500 | 0.0% | Pending SHC_3BB0A8C1_0x005005F0 | 0.0% | Pending -SHC_3BB0A8C1_0x00500640 | 46.2% | instruction selection differs +SHC_3BB0A8C1_0x00500640 | 46.2% | register allocation differs SHC_3BB0A8C1_0x00500680 | 100.0% | Reimplemented @@ -41539,7 +41539,7 @@ SHC_3BB0A8C1_0x00501730 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00501760 | 0.0% | Pending -SHC_3BB0A8C1_0x005017A0 | 80.0% | jump target differs +SHC_3BB0A8C1_0x005017A0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x005017C0 | 0.0% | Pending @@ -42067,7 +42067,7 @@ SHC_3BB0A8C1_0x00504ED0 | 0.0% | Pending SHC_3BB0A8C1_0x00504ED1 | 0.0% | Pending -SHC_3BB0A8C1_0x00504EE0 | 38.5% | instruction selection differs +SHC_3BB0A8C1_0x00504EE0 | 38.5% | register allocation differs SHC_3BB0A8C1_0x00504F10 | 0.0% | Pending @@ -46633,7 +46633,7 @@ SHC_3BB0A8C1_0x00521EA5 | 0.0% | Pending SHC_3BB0A8C1_0x00521EA6 | 0.0% | Pending -SHC_3BB0A8C1_0x00521EB0 | 76.5% | instruction selection differs +SHC_3BB0A8C1_0x00521EB0 | 76.5% | pop esi scheduling SHC_3BB0A8C1_0x00521EF0 | 0.0% | Pending @@ -46787,7 +46787,7 @@ SHC_3BB0A8C1_0x00522410 | 0.0% | Pending SHC_3BB0A8C1_0x005224E0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00522520 | 89.7% | instruction selection differs +SHC_3BB0A8C1_0x00522520 | 89.7% | address lea hoisted SHC_3BB0A8C1_0x00522550 | 0.0% | Pending @@ -49659,7 +49659,7 @@ SHC_3BB0A8C1_0x00530EB0 | 0.0% | Pending SHC_3BB0A8C1_0x00530F20 | 0.0% | Pending -SHC_3BB0A8C1_0x00530FD0 | 78.3% | instruction selection differs +SHC_3BB0A8C1_0x00530FD0 | 78.3% | setle vs branch SHC_3BB0A8C1_0x00531000 | 0.0% | Pending @@ -51103,7 +51103,7 @@ SHC_3BB0A8C1_0x00535B00 | 0.0% | Pending SHC_3BB0A8C1_0x00535BC0 | 0.0% | Pending -SHC_3BB0A8C1_0x00535DF0 | 85.7% | jump target differs +SHC_3BB0A8C1_0x00535DF0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00535E20 | 0.0% | Pending @@ -51205,9 +51205,9 @@ SHC_3BB0A8C1_0x00536A60 | 0.0% | Pending SHC_3BB0A8C1_0x00536C70 | 0.0% | Pending -SHC_3BB0A8C1_0x00536C90 | 83.3% | jump target differs +SHC_3BB0A8C1_0x00536C90 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00536CC0 | 83.3% | jump target differs +SHC_3BB0A8C1_0x00536CC0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00536CF0 | 0.0% | Pending @@ -51231,7 +51231,7 @@ SHC_3BB0A8C1_0x00537160 | 100.0% | Reimplemented SHC_3BB0A8C1_0x005371A0 | 0.0% | Pending -SHC_3BB0A8C1_0x005371E0 | 50.0% | jump target differs +SHC_3BB0A8C1_0x005371E0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x005371F0 | 0.0% | Pending @@ -59625,9 +59625,9 @@ SHC_3BB0A8C1_0x0053B210 | 0.0% | Pending SHC_3BB0A8C1_0x0053B260 | 0.0% | Pending -SHC_3BB0A8C1_0x0053B310 | 90.0% | register allocation differs +SHC_3BB0A8C1_0x0053B310 | 90.0% | global store scheduling -SHC_3BB0A8C1_0x0053B340 | 81.8% | Store sched + jne vs jl +SHC_3BB0A8C1_0x0053B340 | 81.8% | store sched + jne vs jl SHC_3BB0A8C1_0x0053B380 | 0.0% | Pending @@ -59637,13 +59637,13 @@ SHC_3BB0A8C1_0x0053B3E0 | 0.0% | Pending SHC_3BB0A8C1_0x0053B4F0 | 0.0% | Pending -SHC_3BB0A8C1_0x0053B530 | 92.3% | register allocation differs +SHC_3BB0A8C1_0x0053B530 | 92.3% | global store scheduling -SHC_3BB0A8C1_0x0053B570 | 90.0% | register allocation differs +SHC_3BB0A8C1_0x0053B570 | 90.0% | global store scheduling SHC_3BB0A8C1_0x0053B5A0 | 0.0% | Pending -SHC_3BB0A8C1_0x0053B5E0 | 90.0% | register allocation differs +SHC_3BB0A8C1_0x0053B5E0 | 90.0% | global store scheduling SHC_3BB0A8C1_0x0053B610 | 0.0% | Pending @@ -60095,7 +60095,7 @@ SHC_3BB0A8C1_0x0053E820 | 0.0% | Pending SHC_3BB0A8C1_0x0053E870 | 0.0% | Pending -SHC_3BB0A8C1_0x0053E8D0 | 90.0% | jump target differs +SHC_3BB0A8C1_0x0053E8D0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0053E900 | 0.0% | Pending From f462cf7806bd4a63d2458e0fc665858e30ec41e6 Mon Sep 17 00:00:00 2001 From: Gynt Date: Tue, 29 Sep 2026 18:29:56 +0200 Subject: [PATCH 227/241] cleanup style --- src/OpenSHC/Game/GameStateStructures/resetTraderState.cpp | 4 ---- src/OpenSHC/Map/Version/SetDairyCheeseToZero.cpp | 4 ---- src/OpenSHC/UI/Helpers/LoadTGX_shc_back.cpp | 3 ++- .../MenuItemActionHandler_DisableEuroTroops_Main.cpp | 3 ++- 4 files changed, 4 insertions(+), 10 deletions(-) diff --git a/src/OpenSHC/Game/GameStateStructures/resetTraderState.cpp b/src/OpenSHC/Game/GameStateStructures/resetTraderState.cpp index e7ecb4fdf..534503c1d 100644 --- a/src/OpenSHC/Game/GameStateStructures/resetTraderState.cpp +++ b/src/OpenSHC/Game/GameStateStructures/resetTraderState.cpp @@ -3,10 +3,6 @@ namespace OpenSHC { namespace Game { - /* - decompilerscript: committed: 2025-01-30 21:57:43.216000 - */ - // FUNCTION: STRONGHOLDCRUSADER 0x004586F0 void GameStateStructures::resetTraderState() { diff --git a/src/OpenSHC/Map/Version/SetDairyCheeseToZero.cpp b/src/OpenSHC/Map/Version/SetDairyCheeseToZero.cpp index d5d8a1b5f..2417584a6 100644 --- a/src/OpenSHC/Map/Version/SetDairyCheeseToZero.cpp +++ b/src/OpenSHC/Map/Version/SetDairyCheeseToZero.cpp @@ -12,10 +12,6 @@ namespace Map { using OpenSHC::Map::Buildings::BuildingLogicalState; using OpenSHC::Map::Buildings::BuildingType; - /* - decompilerscript: committed: 2025-01-30 21:57:43.216000 - */ - // FUNCTION: STRONGHOLDCRUSADER 0x0041A2B0 void Version::SetDairyCheeseToZero() { diff --git a/src/OpenSHC/UI/Helpers/LoadTGX_shc_back.cpp b/src/OpenSHC/UI/Helpers/LoadTGX_shc_back.cpp index 51d28f5ba..8c464f386 100644 --- a/src/OpenSHC/UI/Helpers/LoadTGX_shc_back.cpp +++ b/src/OpenSHC/UI/Helpers/LoadTGX_shc_back.cpp @@ -1,5 +1,6 @@ #include "OpenSHC/UI/Helpers.func.hpp" #include "OpenSHC/UI/Rendering/TextureRenderCore.func.hpp" +#include "OpenSHC/string-literals.hpp" #include "OpenSHC/Globals/DAT_TextureRenderCoreObject.hpp" @@ -11,7 +12,7 @@ namespace UI { void LoadTGX_shc_back() { MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::TextureRenderCore_Func::loadGfxFile, - DAT_TextureRenderCoreObject::ptr)("shc_back.tgx"); + DAT_TextureRenderCoreObject::ptr)(s_shc_back_tgx_005a1f8c); } } diff --git a/src/OpenSHC/UI/MenuItems/DisableEuroTroops/MenuItemActionHandler_DisableEuroTroops_Main.cpp b/src/OpenSHC/UI/MenuItems/DisableEuroTroops/MenuItemActionHandler_DisableEuroTroops_Main.cpp index 5c97f4aa6..c1cfe507b 100644 --- a/src/OpenSHC/UI/MenuItems/DisableEuroTroops/MenuItemActionHandler_DisableEuroTroops_Main.cpp +++ b/src/OpenSHC/UI/MenuItems/DisableEuroTroops/MenuItemActionHandler_DisableEuroTroops_Main.cpp @@ -19,7 +19,8 @@ namespace UI { { // indexes the seven barracks troop flags that directly precede SEC_MercRecruitable if ((uint)troopIndex <= 7) { - DAT_MapPropertiesState::instance.SEC_MercRecruitable[troopIndex - 7] ^= 1; + DAT_MapPropertiesState::instance.barracksRecruitability.array.barracksRecruitability[troopIndex] + ^= 1; return; } if (troopIndex == -3) { From b6ea1db3f3eddf0a2114cc99f82346a5ca3e8215 Mon Sep 17 00:00:00 2001 From: Gynt Date: Wed, 30 Sep 2026 12:03:06 +0200 Subject: [PATCH 228/241] reimplement: SHC_3BB0A8C1_0x00530FD0 100% --- .../UnitsState/checkIfCitizenUnitIsAliveBasedOnState.cpp | 9 +-------- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/src/OpenSHC/Map/Units/UnitsState/checkIfCitizenUnitIsAliveBasedOnState.cpp b/src/OpenSHC/Map/Units/UnitsState/checkIfCitizenUnitIsAliveBasedOnState.cpp index 7006ce23d..ebafe05f4 100644 --- a/src/OpenSHC/Map/Units/UnitsState/checkIfCitizenUnitIsAliveBasedOnState.cpp +++ b/src/OpenSHC/Map/Units/UnitsState/checkIfCitizenUnitIsAliveBasedOnState.cpp @@ -13,14 +13,7 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x00530FD0 BOOLEnum UnitsState::checkIfCitizenUnitIsAliveBasedOnState(int unitID) { - short const state = (ushort)this->units[unitID].state.generic; - if (state >= 111) { - if (state <= 116) { - return TRUE; - } - return FALSE; - } - return FALSE; + return 0x6f <= this->units[unitID].state.generic && this->units[unitID].state.generic <= 0x74; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 54c16b5fb..c34ea2bc1 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -49659,7 +49659,7 @@ SHC_3BB0A8C1_0x00530EB0 | 0.0% | Pending SHC_3BB0A8C1_0x00530F20 | 0.0% | Pending -SHC_3BB0A8C1_0x00530FD0 | 78.3% | setle vs branch +SHC_3BB0A8C1_0x00530FD0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00531000 | 0.0% | Pending From b9b14bd5220444a8503700aad65b9c9116d11e2a Mon Sep 17 00:00:00 2001 From: Gynt Date: Wed, 30 Sep 2026 13:14:54 +0200 Subject: [PATCH 229/241] reimplement: SHC_3BB0A8C1_0x00522520 100% --- src/OpenSHC/Map/Units/TribesState/addUnitToSelected.cpp | 6 ++++-- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/OpenSHC/Map/Units/TribesState/addUnitToSelected.cpp b/src/OpenSHC/Map/Units/TribesState/addUnitToSelected.cpp index 1b1536793..426837812 100644 --- a/src/OpenSHC/Map/Units/TribesState/addUnitToSelected.cpp +++ b/src/OpenSHC/Map/Units/TribesState/addUnitToSelected.cpp @@ -10,8 +10,10 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x00522520 void TribesState::addUnitToSelected(int unitID) { - ((ushort*)DAT_UnitsState::instance.selectedUnitsBitFlags)[unitID / 16] - |= DAT_UnitSelectionDefinedData::instance.BitMaskHelper[unitID % 16]; + int const bitFlagsIndex = unitID / 16; + int const bitMaskIndex = unitID % 16; + ((short*)DAT_UnitsState::instance.selectedUnitsBitFlags)[bitFlagsIndex] + |= DAT_UnitSelectionDefinedData::instance.BitMaskHelper[bitMaskIndex]; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index c34ea2bc1..6ece395b2 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -46787,7 +46787,7 @@ SHC_3BB0A8C1_0x00522410 | 0.0% | Pending SHC_3BB0A8C1_0x005224E0 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x00522520 | 89.7% | address lea hoisted +SHC_3BB0A8C1_0x00522520 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00522550 | 0.0% | Pending From 53e6244519490de8a18e4deccd008b5b85607149 Mon Sep 17 00:00:00 2001 From: Gynt Date: Wed, 30 Sep 2026 18:37:31 +0200 Subject: [PATCH 230/241] reimplement: SHC_3BB0A8C1_0x0045B7F0 100% /GL --- cmake/compiler-flags-gl.txt | 3 +++ status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/cmake/compiler-flags-gl.txt b/cmake/compiler-flags-gl.txt index 96822b9d4..c9cc7c60c 100644 --- a/cmake/compiler-flags-gl.txt +++ b/cmake/compiler-flags-gl.txt @@ -11,3 +11,6 @@ src/OpenSHC/Map/TileMapState/updateMoatCountdownTimers.cpp src/OpenSHC/Map/TileMapState/recountTotalOwnedMoats.cpp src/OpenSHC/Game/GameStateStructures/getSalesPrice.cpp src/OpenSHC/Map/TileMapState/updateBuildingPlacementRotationPreview.cpp +src/OpenSHC/Map/Units/TribesState/playUnitSelectSpeech.cpp +src/OpenSHC/Audio/SFX/SFXState/playUnitSpeech.cpp +src/OpenSHC/Game/GameStateStructures/getSellResourceAmount.cpp \ No newline at end of file diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 6ece395b2..38c0b8851 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -18041,7 +18041,7 @@ SHC_3BB0A8C1_0x0045B4A0 | 0.0% | Pending SHC_3BB0A8C1_0x0045B6B0 | 0.0% | Pending -SHC_3BB0A8C1_0x0045B7F0 | 63.2% | register allocation differs +SHC_3BB0A8C1_0x0045B7F0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0045B830 | 0.0% | Pending From 4ed3b809d6e0182a0d955d84f1b8ad2dd3c7824b Mon Sep 17 00:00:00 2001 From: Gynt Date: Wed, 30 Sep 2026 18:40:41 +0200 Subject: [PATCH 231/241] string literal usage --- .../UI/DisplayElements/RenderNoRushDisplayElementUnk.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/OpenSHC/UI/DisplayElements/RenderNoRushDisplayElementUnk.cpp b/src/OpenSHC/UI/DisplayElements/RenderNoRushDisplayElementUnk.cpp index e970aa563..a2f65dd86 100644 --- a/src/OpenSHC/UI/DisplayElements/RenderNoRushDisplayElementUnk.cpp +++ b/src/OpenSHC/UI/DisplayElements/RenderNoRushDisplayElementUnk.cpp @@ -10,6 +10,7 @@ #include "OpenSHC/Text/TextAlignment.hpp" #include "OpenSHC/UI/Enums/DisplayElementID.hpp" #include "OpenSHC/WindowsHelper/Enums/BOOLEnum.hpp" +#include "OpenSHC/string-literals.hpp" #include "OpenSHC/Globals/COL_BLACK.hpp" #include "OpenSHC/Globals/COL_DARK_LIME.hpp" @@ -35,7 +36,8 @@ namespace UI { { if (DAT_GameState::instance.mapAndTime.skirmishNoRushTicks == 0) { // Plays pa paam pa pa pa paam - MACRO_CALL_MEMBER(OpenSHC::Audio::SFX::SFXState_Func::playWAVSFX, DAT_SFXState::ptr)("battlehorn.wav"); + MACRO_CALL_MEMBER(OpenSHC::Audio::SFX::SFXState_Func::playWAVSFX, DAT_SFXState::ptr)( + s_battlehorn_wav_005a77d8); MACRO_CALL(OpenSHC::UI::DisplayElements_Func::CheckDisplayElementByIDAndSetForUnlimitedDisplay)( OpenSHC::UI::Enums::DEID_NO_RUSH, 0); return; From 96008db0d0f175a62802fd0b2af665cd874be859 Mon Sep 17 00:00:00 2001 From: Gynt Date: Wed, 30 Sep 2026 19:25:12 +0200 Subject: [PATCH 232/241] reimplement: SHC_3BB0A8C1_0x004B20B0 82.43% shared arm fold direction Co-Authored-By: Claude Opus 5 --- .../DisplayElements/RenderNoRushDisplayElementUnk.cpp | 11 +++++------ status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/OpenSHC/UI/DisplayElements/RenderNoRushDisplayElementUnk.cpp b/src/OpenSHC/UI/DisplayElements/RenderNoRushDisplayElementUnk.cpp index a2f65dd86..47577c0a1 100644 --- a/src/OpenSHC/UI/DisplayElements/RenderNoRushDisplayElementUnk.cpp +++ b/src/OpenSHC/UI/DisplayElements/RenderNoRushDisplayElementUnk.cpp @@ -79,22 +79,21 @@ namespace UI { } else if (DAT_WindowAndDirectDraw::instance.currentGameResolution == OpenSHC::Rendering::SRE_1360x768) { x -= 280; } - int const halfWidth = barWidth / 2; - x += -18 - halfWidth; - int const left = x - halfWidth; + x += -18 - (barWidth / 2); + int const left = x - (barWidth / 2); MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawBlendedBlackBox, - DAT_PencilRenderCore::ptr)(left - 7, posY - 5, halfWidth + 5 + x, posY + 30, 16); + DAT_PencilRenderCore::ptr)(left - 7, posY - 5, (barWidth / 2) + 5 + x, posY + 30, 16); MACRO_CALL_MEMBER(OpenSHC::Text::TextManager_Func::renderInGameTextWithShadow, DAT_TextManagerObject::ptr)( MACRO_CALL_MEMBER(OpenSHC::Text::TextManager_Func::getTextStringInGroupAtOffset, DAT_TextManagerObject::ptr)(OpenSHC::DE::SHCDE::TEXT_SKIRMISH_MISC, 7), x, posY, OpenSHC::Text::TTA_CENTER, 0xc2f0eb, 0, 18, FALSE, 0); MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawBorderBox, DAT_PencilRenderCore::ptr)( - left - 1, posY + 18, halfWidth + 1 + x, posY + 24, COL_BLACK::instance.shortValue); + left - 1, posY + 18, (barWidth / 2) + 1 + x, posY + 24, COL_BLACK::instance.shortValue); MACRO_CALL_MEMBER(OpenSHC::UI::Rendering::PencilRenderCore_Func::drawColorBox, DAT_PencilRenderCore::ptr)( left, posY + 19, (DAT_GameState::instance.mapAndTime.skirmishNoRushTicks * barWidth) / DAT_GameState::instance.mapAndTime.skirmishNoRushTicksLeft - - halfWidth + x, + - (barWidth / 2) + x, posY + 23, COL_DARK_LIME::instance.shortValue); DAT_PencilRenderCore::instance.surfaceTarget = OpenSHC::Rendering::Enums::RT_SCREEN_MENU; } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 38c0b8851..231d80765 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -26001,7 +26001,7 @@ SHC_3BB0A8C1_0x004B1E60 | 0.0% | Pending SHC_3BB0A8C1_0x004B1EB0 | 0.0% | Pending -SHC_3BB0A8C1_0x004B20B0 | 67.6% | equal arms merged by MSVC +SHC_3BB0A8C1_0x004B20B0 | 82.4% | shared arm fold direction SHC_3BB0A8C1_0x004B2280 | 0.0% | Pending From 7571a63a457004cbc9bef2accdea220acfd434db Mon Sep 17 00:00:00 2001 From: Gynt Date: Wed, 30 Sep 2026 23:45:32 +0200 Subject: [PATCH 233/241] reimplement: SHC_3BB0A8C1_0x0053B5E0 100% --- src/OpenSHC/Map/Version/UpgradeMapUnitsTo_155.cpp | 3 ++- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_155.cpp b/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_155.cpp index 9eb84d620..8371c1009 100644 --- a/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_155.cpp +++ b/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_155.cpp @@ -14,8 +14,9 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x0053B5E0 void Version::UpgradeMapUnitsTo_155() { - DAT_CurrentUnitSlotID::instance = 2500; + DAT_CurrentUnitSlotID::instance = 1; for (int unitID = 1; unitID < 2500; ++unitID) { + DAT_CurrentUnitSlotID::instance += 1; if (DAT_UnitsState::instance.units[unitID].logicalState != Units::ULS_INVISIBLE) { DAT_UnitsState::instance.units[unitID].killedFlagUnk = 0; } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 231d80765..f91c9d252 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -59643,7 +59643,7 @@ SHC_3BB0A8C1_0x0053B570 | 90.0% | global store scheduling SHC_3BB0A8C1_0x0053B5A0 | 0.0% | Pending -SHC_3BB0A8C1_0x0053B5E0 | 90.0% | global store scheduling +SHC_3BB0A8C1_0x0053B5E0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0053B610 | 0.0% | Pending From 73a8ff043cabf90d9264bf8ce011d28737c3805f Mon Sep 17 00:00:00 2001 From: Gynt Date: Wed, 30 Sep 2026 23:49:42 +0200 Subject: [PATCH 234/241] reimplement: SHC_3BB0A8C1_0x0053B340 90.91% --- src/OpenSHC/Map/Version/UpgradeMapUnitsTo_112.cpp | 3 ++- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_112.cpp b/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_112.cpp index 39850f40b..711a49fec 100644 --- a/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_112.cpp +++ b/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_112.cpp @@ -14,8 +14,9 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x0053B340 void Version::UpgradeMapUnitsTo_112() { - DAT_CurrentUnitSlotID::instance = 2500; + DAT_CurrentUnitSlotID::instance = 1; for (int unitID = 1; unitID != 2500; ++unitID) { + DAT_CurrentUnitSlotID::instance += 1; if (DAT_UnitsState::instance.units[unitID].logicalState == Units::ULS_NORMAL) { DAT_UnitsState::instance.units[unitID].buildingID = DAT_UnitsState::instance.units[unitID].workplaceBuildingID_1; diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index f91c9d252..9768a7c9e 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -59627,7 +59627,7 @@ SHC_3BB0A8C1_0x0053B260 | 0.0% | Pending SHC_3BB0A8C1_0x0053B310 | 90.0% | global store scheduling -SHC_3BB0A8C1_0x0053B340 | 81.8% | store sched + jne vs jl +SHC_3BB0A8C1_0x0053B340 | 90.91% | jne vs jl due to loop unroll prevention via != SHC_3BB0A8C1_0x0053B380 | 0.0% | Pending From fc77a5202af110b78bf315c03e9eb0435ab3aa70 Mon Sep 17 00:00:00 2001 From: Gynt Date: Wed, 30 Sep 2026 23:50:19 +0200 Subject: [PATCH 235/241] reimplement: SHC_3BB0A8C1_0x0053B570 100% --- src/OpenSHC/Map/Version/UpgradeMapUnitsTo_149.cpp | 3 ++- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_149.cpp b/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_149.cpp index e012bcfc2..4b6fb6957 100644 --- a/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_149.cpp +++ b/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_149.cpp @@ -14,8 +14,9 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x0053B570 void Version::UpgradeMapUnitsTo_149() { - DAT_CurrentUnitSlotID::instance = 2500; + DAT_CurrentUnitSlotID::instance = 1; for (int unitID = 1; unitID < 2500; ++unitID) { + DAT_CurrentUnitSlotID::instance += 1; if (DAT_UnitsState::instance.units[unitID].logicalState == Units::ULS_NORMAL) { DAT_UnitsState::instance.units[unitID].shootBeforeStop = 0; } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 9768a7c9e..522039da0 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -59639,7 +59639,7 @@ SHC_3BB0A8C1_0x0053B4F0 | 0.0% | Pending SHC_3BB0A8C1_0x0053B530 | 92.3% | global store scheduling -SHC_3BB0A8C1_0x0053B570 | 90.0% | global store scheduling +SHC_3BB0A8C1_0x0053B570 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0053B5A0 | 0.0% | Pending From 20b76b536d5591982f1f3db9d786f56ea4384eb3 Mon Sep 17 00:00:00 2001 From: Gynt Date: Wed, 30 Sep 2026 23:50:48 +0200 Subject: [PATCH 236/241] reimplement: SHC_3BB0A8C1_0x0053B310 100% --- src/OpenSHC/Map/Version/UpgradeMapUnitsTo_114.cpp | 3 ++- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_114.cpp b/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_114.cpp index 29a2df9f1..03ee3e4af 100644 --- a/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_114.cpp +++ b/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_114.cpp @@ -14,8 +14,9 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x0053B310 void Version::UpgradeMapUnitsTo_114() { - DAT_CurrentUnitSlotID::instance = 2500; + DAT_CurrentUnitSlotID::instance = 1; for (int unitID = 1; unitID < 2500; ++unitID) { + DAT_CurrentUnitSlotID::instance += 1; if (DAT_UnitsState::instance.units[unitID].logicalState == Units::ULS_NORMAL) { DAT_UnitsState::instance.units[unitID].calculatedOwnerPlayerIndex = 0; } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 522039da0..cfd220941 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -59625,7 +59625,7 @@ SHC_3BB0A8C1_0x0053B210 | 0.0% | Pending SHC_3BB0A8C1_0x0053B260 | 0.0% | Pending -SHC_3BB0A8C1_0x0053B310 | 90.0% | global store scheduling +SHC_3BB0A8C1_0x0053B310 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0053B340 | 90.91% | jne vs jl due to loop unroll prevention via != From 6b660b15fc8f7564d5523581c2b43302a3fd862b Mon Sep 17 00:00:00 2001 From: Gynt Date: Wed, 30 Sep 2026 23:51:18 +0200 Subject: [PATCH 237/241] reimplement: SHC_3BB0A8C1_0x0053B530 100% --- src/OpenSHC/Map/Version/UpgradeMapUnitsTo_130.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_130.cpp b/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_130.cpp index 806588e06..d4b712994 100644 --- a/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_130.cpp +++ b/src/OpenSHC/Map/Version/UpgradeMapUnitsTo_130.cpp @@ -16,8 +16,9 @@ namespace Map { // FUNCTION: STRONGHOLDCRUSADER 0x0053B530 void Version::UpgradeMapUnitsTo_130() { - DAT_CurrentUnitSlotID::instance = 2500; + DAT_CurrentUnitSlotID::instance = 1; for (int unitID = 1; unitID < 2500; ++unitID) { + DAT_CurrentUnitSlotID::instance += 1; if (DAT_UnitsState::instance.units[unitID].logicalState == Units::ULS_NORMAL && DAT_UnitsState::instance.units[unitID].unitType == Units::UT_COW) { DAT_UnitsState::instance.units[unitID] From b473e2c9fb4de030ba8096e417baf68f605be0f8 Mon Sep 17 00:00:00 2001 From: Gynt Date: Wed, 30 Sep 2026 23:51:38 +0200 Subject: [PATCH 238/241] reimplement: SHC_3BB0A8C1_0x0053B530 100% --- status/addresses-SHC-3BB0A8C1.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index cfd220941..24671f434 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -59637,7 +59637,7 @@ SHC_3BB0A8C1_0x0053B3E0 | 0.0% | Pending SHC_3BB0A8C1_0x0053B4F0 | 0.0% | Pending -SHC_3BB0A8C1_0x0053B530 | 92.3% | global store scheduling +SHC_3BB0A8C1_0x0053B530 | 100.0% | Reimplemented SHC_3BB0A8C1_0x0053B570 | 100.0% | Reimplemented From cea1e40af1c6f37d3f6bf5ccf2b03a633e36382c Mon Sep 17 00:00:00 2001 From: Gynt Date: Wed, 30 Sep 2026 23:54:08 +0200 Subject: [PATCH 239/241] reimplement: SHC_3BB0A8C1_0x00504EE0 100% --- cmake/compiler-flags-gl.txt | 3 ++- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/cmake/compiler-flags-gl.txt b/cmake/compiler-flags-gl.txt index c9cc7c60c..1f9281c73 100644 --- a/cmake/compiler-flags-gl.txt +++ b/cmake/compiler-flags-gl.txt @@ -13,4 +13,5 @@ src/OpenSHC/Game/GameStateStructures/getSalesPrice.cpp src/OpenSHC/Map/TileMapState/updateBuildingPlacementRotationPreview.cpp src/OpenSHC/Map/Units/TribesState/playUnitSelectSpeech.cpp src/OpenSHC/Audio/SFX/SFXState/playUnitSpeech.cpp -src/OpenSHC/Game/GameStateStructures/getSellResourceAmount.cpp \ No newline at end of file +src/OpenSHC/Game/GameStateStructures/getSellResourceAmount.cpp +src/OpenSHC/Map/TileMapState/determineBuildingPlacementRotation.cpp \ No newline at end of file diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 24671f434..dcb16fb9e 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -42067,7 +42067,7 @@ SHC_3BB0A8C1_0x00504ED0 | 0.0% | Pending SHC_3BB0A8C1_0x00504ED1 | 0.0% | Pending -SHC_3BB0A8C1_0x00504EE0 | 38.5% | register allocation differs +SHC_3BB0A8C1_0x00504EE0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00504F10 | 0.0% | Pending From 10e891a469b6ee481e87d7b5bd29770dfb892124 Mon Sep 17 00:00:00 2001 From: Gynt Date: Wed, 30 Sep 2026 23:55:55 +0200 Subject: [PATCH 240/241] reimplement: SHC_3BB0A8C1_0x004549C0 100.0% --- .../checkIfGfxTgxStartsWithTransparentPixels.cpp | 11 ++++++++--- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/OpenSHC/UI/Rendering/TextureRenderCore/checkIfGfxTgxStartsWithTransparentPixels.cpp b/src/OpenSHC/UI/Rendering/TextureRenderCore/checkIfGfxTgxStartsWithTransparentPixels.cpp index cec9350f8..246f0c37b 100644 --- a/src/OpenSHC/UI/Rendering/TextureRenderCore/checkIfGfxTgxStartsWithTransparentPixels.cpp +++ b/src/OpenSHC/UI/Rendering/TextureRenderCore/checkIfGfxTgxStartsWithTransparentPixels.cpp @@ -12,9 +12,14 @@ namespace UI { // FUNCTION: STRONGHOLDCRUSADER 0x004549C0 BOOLEnum TextureRenderCore::checkIfGfxTgxStartsWithTransparentPixels(int gfxIndex) { - return (((byte*)this->gmAndGfxImageDataBuffer)[this->loadedGfxArray[gfxIndex].offsetInBuffer + 8] - & OpenSHC::IO::Graphics::TT_TGX_PIXEL_HEADER) - == OpenSHC::IO::Graphics::TT_TRANSPARENT_PIXELS; + int byteIndex = this->loadedGfxArray[gfxIndex].offsetInBuffer + 8; + byte checkByte = ((byte*)this->gmAndGfxImageDataBuffer)[byteIndex]; + if ((checkByte & OpenSHC::IO::Graphics::TT_TGX_PIXEL_HEADER) + == OpenSHC::IO::Graphics::TT_TRANSPARENT_PIXELS) { + return TRUE; + } else { + return FALSE; + } } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index dcb16fb9e..0ebcaf508 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -16987,7 +16987,7 @@ SHC_3BB0A8C1_0x00454960 | 100.0% | Reimplemented SHC_3BB0A8C1_0x00454990 | 100.0% | Reimplemented -SHC_3BB0A8C1_0x004549C0 | 40.0% | register allocation differs +SHC_3BB0A8C1_0x004549C0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004549F0 | 0.0% | Pending From fd9bec665ffe1fa4354c9ffbaf168f51b843da70 Mon Sep 17 00:00:00 2001 From: Gynt Date: Wed, 30 Sep 2026 23:58:16 +0200 Subject: [PATCH 241/241] reimplement: SHC_3BB0A8C1_0x004039B0 100.0% --- .../Map/Entities/EntityState/activateProjectileEntity.cpp | 3 ++- status/addresses-SHC-3BB0A8C1.txt | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/OpenSHC/Map/Entities/EntityState/activateProjectileEntity.cpp b/src/OpenSHC/Map/Entities/EntityState/activateProjectileEntity.cpp index 9037e799e..da1f3b8a5 100644 --- a/src/OpenSHC/Map/Entities/EntityState/activateProjectileEntity.cpp +++ b/src/OpenSHC/Map/Entities/EntityState/activateProjectileEntity.cpp @@ -11,12 +11,13 @@ namespace Map { using OpenSHC::Map::Entities::EntityTypeShort; // FUNCTION: STRONGHOLDCRUSADER 0x004039B0 - void EntityState::activateProjectileEntity(int entityID) + int EntityState::activateProjectileEntity(int entityID) { this->entityArray[entityID].logicalState = 2; this->entityArray[entityID].field72_0xa8 = 1; MACRO_CALL_MEMBER(OpenSHC::Map::Entities::EntityState_Func::setProjectileEntityValues2, this)( entityID, (EntityType)this->entityArray[entityID].entityType2); + return entityID; } } diff --git a/status/addresses-SHC-3BB0A8C1.txt b/status/addresses-SHC-3BB0A8C1.txt index 0ebcaf508..58cdae59e 100644 --- a/status/addresses-SHC-3BB0A8C1.txt +++ b/status/addresses-SHC-3BB0A8C1.txt @@ -539,7 +539,7 @@ SHC_3BB0A8C1_0x00403900 | 0.0% | Pending SHC_3BB0A8C1_0x00403980 | 0.0% | Pending -SHC_3BB0A8C1_0x004039B0 | 36.4% | register alloc + arg scheduling +SHC_3BB0A8C1_0x004039B0 | 100.0% | Reimplemented SHC_3BB0A8C1_0x004039F0 | 100.0% | Reimplemented