Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
f3b0d60
A lot of useful things reversed and tested
DronCode Jun 15, 2026
b66f8fb
Added details about ZEventBase, ZGEOM and other base types
DronCode Jun 18, 2026
00f1c50
Added ZROOM, ZTreeGroup, ZGROUP, ZCAMERA details
DronCode Jun 19, 2026
cc46a9e
Added ZStackArray, ZRTString, ZTARGET, ZIKHAND, ZLNKOBJ and fixed ali…
DronCode Jun 19, 2026
5cb48e1
Added CCom, ZTreeGroup, Fwd, PF4::Fwds, ZActionDispatcher, ZLnkAction…
DronCode Jun 19, 2026
353d51e
Added ZQuat, ZCTRLIKLNKOBJ and ZLNKWHANDS
DronCode Jun 19, 2026
480b450
Small fixes and animation manager intro
DronCode Jun 19, 2026
9482b34
Another fixes and trying to fix crashes in new code
DronCode Jun 20, 2026
5450dba
Fixed crash and added more validations
DronCode Jun 20, 2026
bf37ee8
Added CBaseEvent<T>, refactored inheritance in most classes, ZItem, Z…
DronCode Jun 20, 2026
eaa440a
Added ZPlayer base, part of PF4::*, ZMovementBase (untested)
DronCode Jun 20, 2026
f2cb5ca
Add ZEntityLocator include to ZPlayer.h
DronCode Jun 20, 2026
6c68665
Trying to fix ZGEOM, ZGROUP vtables to work properly, but it's fucked…
DronCode Jun 21, 2026
8736731
PF4 (part), Most ZGROUP inherited types, some ZSTL stuff, Fysix stuff…
DronCode Jun 24, 2026
24571f4
Added some stuff and reversed headers of ZItem* in Glacier side
DronCode Jun 24, 2026
071fffb
All ZItem* items reversed
DronCode Jun 24, 2026
2598271
Added SpriteDraw entities and started work on ZHitman3 mega-class
DronCode Jun 24, 2026
e27c85b
ZHitman3 itself
DronCode Jun 25, 2026
c21270f
Added ZActor (in testing)
DronCode Jun 25, 2026
76fdc59
Another batch of fixes and new patch with preloader fix
DronCode Jun 28, 2026
2579286
Added lost changes from core
DronCode Jun 28, 2026
4965cd5
Added ZHM3Actor and small fixes
DronCode Jun 28, 2026
7068ca5
Added a lot of HBM stuff and glacier primitives
DronCode Jun 30, 2026
829a117
Another bunch of data & complete RE of some things
DronCode Jul 9, 2026
acf6ab8
Fixed some tests, added more entries, need fix STATICREFTAB flapping …
DronCode Jul 9, 2026
5853517
Fixed impl of STATICREFTAB & bug in REFTAB (wrong size calc)
DronCode Jul 10, 2026
fe10fbc
Added STRREFTAB and small improvements in REFTAB Iterator impl
DronCode Jul 10, 2026
c86b7d5
Implemented LINKREFTAB, ZPoolAllocRefTab & ZPoolAllocator and everyth…
DronCode Jul 10, 2026
349340a
Added CQuadtree impl with tests, SimpleXML, ZStackArray tests and COb…
DronCode Jul 11, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
cmake-build*
build
build*/*
.idea
.vscode
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
cmake_minimum_required(VERSION 4.0)
project(ReHitmanRoot)

set(CMAKE_POLICY_VERSION_MINIMUM 3.5)
#TODO Check that we will compile only under x86!

add_subdirectory(ReHitman)
2 changes: 1 addition & 1 deletion ReHitman/BloodMoney/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.16)
cmake_minimum_required(VERSION 4.0)
project(BloodMoney)
set(CMAKE_CXX_STANDARD 20)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ namespace Hitman::BloodMoney
static std::intptr_t BMAPI_FunctionAddress_CMetalDetector_DoAlarm;
static std::intptr_t BMAPI_FunctionAddress_ZHM3Actor_PreparePath;
static std::intptr_t BMAPI_FunctionAddress_ZHM3Actor_ActivateBloodSpurt;
static std::intptr_t BMAPI_FunctionAddress_ZHM3Actor_InitMapIcon;
static std::intptr_t BMAPI_FunctionAddress_ZTie_HideTie;
static std::intptr_t BMAPI_FunctionAddress_ZTie_HideTieInMirror;
static std::intptr_t BMAPI_FunctionAddress_ZXMLGUISystem_GetTopWindow;
Expand Down
3 changes: 2 additions & 1 deletion ReHitman/BloodMoney/include/BloodMoney/Engine/ZBoidSystem.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
#include <cstdint>

#include <Glacier/GlacierFWD.h>
#include <Glacier/PF4/Fwd.h>

namespace Hitman::BloodMoney
{
Expand All @@ -19,7 +20,7 @@ namespace Hitman::BloodMoney
ZBoid** m_boidsPool; //0x0000
int32_t m_pFreeAvailableMemForPoolBegin; //0x0004
int32_t m_pFreeAvailableMemForPoolEnd; //0x0008
Glacier::PF4::Interface* m_pPF4Interface; //0x000C (always nullptr, maybe unused)
Glacier::PF4::ZInterface* m_pPF4Interface; //0x000C (always nullptr, maybe unused)
int32_t m_totalBoids; //0x0010
int32_t m_unknownField; //0x0014

Expand Down
69 changes: 69 additions & 0 deletions ReHitman/BloodMoney/include/BloodMoney/Game/Actions/EHM3Action.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
#pragma once

namespace Hitman::BloodMoney
{
enum EHM3Action {
eNone = 0,
eCancel = 1,
eOpenDoor = 2,
eCloseDoor = 3,
eLockDoor = 4,
eUnLockDoor = 5,
ePickLock = 6,
eStrangle = 7,
eHackSlash = 8,
ePushPerson = 9,
eReload = 10,
eCombine = 11,
eDrop = 12,
eThrow = 13,
eHolster = 14,
eLookKeyhole = 15,
ePickup = 16,
eChangeClothes = 17,
eTalk = 18,
eHumanShield = 19,
eHumanShieldRelease = 20,
eDragBody = 21,
ePutInSuitcase = 22,
eConcealWeapon = 23,
eHideWeapon = 24,
eHideInCloset = 25,
eDropBody = 26,
eOpenLid = 27,
eCloseLid = 28,
eUseKeyCard = 29,
eGrab = 30,
eRelease = 31,
eClimbHatch = 32,
eStrangleInElevator = 33,
ePutItemElevator = 34,
ePlaceItem = 35,
ePlaceBomb = 36,
eRetrieveItem = 37,
eJumpBalcony = 38,
eActionKill = 39,
eElevatorButton = 40,
ePlace = 41,
eRetrieve = 42,
eUseSwitch = 43,
eGeneric = 44,
eHideBodyOnTable = 45,
ePlaceItemToPos = 46,
eHitmanUseWeaponStorage = 47,
eBreakUtilBox = 48,
eUseLightSwitch = 49,
eUseFireAlarm = 50,
eExitKeyhole = 51,
eExitCloset = 52,
eSurrendWeapon = 53,
eStealTape = 54,
eADisposeBodyToDumpster = 55,
eADisposeBodyToCrate = 56,
eADisposeBodyGarbageTruck = 57,
eAThrowRail = 58,
eAThrowChute = 59,
eLast = 60,
};

}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#pragma once

#include <Glacier/EventBase/ZLnkAction.h>
#include <Glacier/ZLnkAction.h>

namespace Hitman::BloodMoney
{
Expand Down
35 changes: 24 additions & 11 deletions ReHitman/BloodMoney/include/BloodMoney/Game/CEVENTCONTROLLER.h
Original file line number Diff line number Diff line change
@@ -1,18 +1,31 @@
#pragma once

#include <Glacier/ZSTL/REFTAB.h>
#include <Glacier/ZSTL/LINKREFTAB.h>
#include <Glacier/ZSTL/TIMETYPE.h>
#include <Glacier/ZSTL/REFTAB.h>


namespace Hitman::BloodMoney
{
struct SActor
{
int32_t lType;
Glacier::ZGEOM* pActor;
Glacier::TIMETYPE vLastCheckTime;
struct SActor* m_pNext;
struct SActor* m_pPrev;
};
RE_VERIFY_SIZE(SActor, 0x14); // Verified

namespace Hitman::BloodMoney {
class CEVENTCONTROLLER {
public:
//vftable: no vftable
struct CEVENTCONTROLLER
{
//data (total size is 0x18)
Glacier::REFTAB* m_refTab0;
Glacier::LINKREFTAB* m_linkRefTab4;
int m_field8;
int m_fieldC;
int m_field10;
int m_field14;
Glacier::REFTAB* m_prtEventList;
Glacier::LINKREFTAB* m_prtActorList;
int32_t m_lUpdateCount;
SActor* m_pActors;
SActor* m_pNextOnScreen;
SActor* m_pNextOffScreen;
};
RE_VERIFY_SIZE(CEVENTCONTROLLER, 0x18); // Verified
}
35 changes: 35 additions & 0 deletions ReHitman/BloodMoney/include/BloodMoney/Game/CExplosionController.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#pragma once

#include <Glacier/ReGlacier.h>
#include <Glacier/Geom/ZEntityLocator.h> // ZBaseGeom
#include <Glacier/ZSTL/REFTAB.h>
#include <Glacier/GlacierFWD.h>
#include <Glacier/Geom/ZGEOM.h>
#include <Glacier/CBaseEvent.h>


namespace Hitman::BloodMoney
{
class CExplosionController : public Glacier::CBaseEvent<Glacier::ZGEOM>
{
public:
// vtbl
// data
float m_fMaxDamage;
float m_fMaxDamageRange;
float m_fMaxRange;
Glacier::ZREF m_rEffectGroup;
Glacier::ZREF m_rExplodedGeom;
Glacier::REFTAB m_rAfterEffectGeomsToActivate;
Glacier::REFTAB m_rAfterEffectGeomsToInactivate;
float m_fHitPoints;
Glacier::ZMSGID m_msgDirectActivationMessage;
bool m_bExploded;
bool m_bExploding;
uint32_t m_iNumberOfTargets;
Glacier::ZBaseGeom* m_pTargets[30];
uint32_t m_iTargetCheck;

};
RE_VERIFY_SIZE(CExplosionController, 0x104); // verified
}
Loading
Loading