102 Patches: Detours to the Rescue
C reference for DttR maintainers and modders.
Loading...
Searching...
No Matches
dttr_util_unstable.h File Reference
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <dttr_core.h>
#include <dttr_pcdogs.h>

Go to the source code of this file.

Data Structures

struct  DTTR_Util_PkgVisit
 A single callback frame. Pointers are visit-lifetime unless documented by PCDOGS. More...
struct  DTTR_Util_PkgWalkOptions
 Walker configuration. Use DTTR_Util_PkgWalk_DefaultOptions() for defaults. More...
struct  DTTR_Util_PkgWalkResult
 Aggregate walk result. Non-fatal per-entry failures keep traversal moving. More...

Macros

#define DTTR_UTIL_API   extern
#define DTTR_UTIL_PKG_DEFAULT_TOC_COUNT   138u

Typedefs

typedef enum DTTR_Util_PkgWalkDomain DTTR_Util_PkgWalkDomain
 Package subtree families that the walker can expose.
typedef enum DTTR_Util_PkgVisitKind DTTR_Util_PkgVisitKind
 Object kind reported to a package visitor.
typedef enum DTTR_Util_PkgVisitStatus DTTR_Util_PkgVisitStatus
 Per-visit and whole-walk status values.
typedef enum DTTR_Util_PkgVisitAction DTTR_Util_PkgVisitAction
 Visitor return value controlling traversal below the current visit.
typedef struct DTTR_Util_PkgVisit DTTR_Util_PkgVisit
typedef DTTR_Util_PkgVisitAction(* DTTR_Util_PkgVisitor) (const DTTR_Util_PkgVisit *visit, void *userdata)
typedef bool(* DTTR_Util_PkgLoadEntryFn) (const DTTR_Core_Context *ctx, int32_t toc_index, const DTTR_PCDOGS_T_PKG_TOCEntry *entry, void *userdata, void **out_entry, size_t *out_size, DTTR_Util_PkgVisitStatus *out_status)
typedef void(* DTTR_Util_PkgFreeEntryFn) (const DTTR_Core_Context *ctx, int32_t toc_index, const DTTR_PCDOGS_T_PKG_TOCEntry *entry, void *entry_data, void *userdata)
typedef struct DTTR_Util_PkgWalkOptions DTTR_Util_PkgWalkOptions
 Walker configuration. Use DTTR_Util_PkgWalk_DefaultOptions() for defaults.
typedef struct DTTR_Util_PkgWalkResult DTTR_Util_PkgWalkResult
 Aggregate walk result. Non-fatal per-entry failures keep traversal moving.

Enumerations

enum  DTTR_Util_PkgWalkDomain {
  DTTR_UTIL_PKG_DOMAIN_TOC = 1u << 0 , DTTR_UTIL_PKG_DOMAIN_ENTRY = 1u << 1 , DTTR_UTIL_PKG_DOMAIN_LEVEL = 1u << 2 , DTTR_UTIL_PKG_DOMAIN_MESH = 1u << 3 ,
  DTTR_UTIL_PKG_DOMAIN_MATERIAL = 1u << 4 , DTTR_UTIL_PKG_DOMAIN_SCENE = 1u << 5 , DTTR_UTIL_PKG_DOMAIN_SPRITE = 1u << 6 , DTTR_UTIL_PKG_DOMAIN_COLLISION = 1u << 7 ,
  DTTR_UTIL_PKG_DOMAIN_KNOWN_CHILDREN , DTTR_UTIL_PKG_DOMAIN_ALL_KNOWN
}
 Package subtree families that the walker can expose. More...
enum  DTTR_Util_PkgVisitKind {
  DTTR_UTIL_PKG_VISIT_TOC_ENTRY = 1 , DTTR_UTIL_PKG_VISIT_LOADED_ENTRY , DTTR_UTIL_PKG_VISIT_LEVEL_RUNTIME_DATA , DTTR_UTIL_PKG_VISIT_MESH_NODE ,
  DTTR_UTIL_PKG_VISIT_MATERIAL_ENTRY , DTTR_UTIL_PKG_VISIT_SCENE_NODE , DTTR_UTIL_PKG_VISIT_SPRITE_ENTRY , DTTR_UTIL_PKG_VISIT_COLLISION_SHAPE ,
  DTTR_UTIL_PKG_VISIT_UNSUPPORTED
}
 Object kind reported to a package visitor. More...
enum  DTTR_Util_PkgVisitStatus {
  DTTR_UTIL_PKG_STATUS_OK = 0 , DTTR_UTIL_PKG_STATUS_INVALID_ARGUMENT , DTTR_UTIL_PKG_STATUS_UNRESOLVED_SYMBOL , DTTR_UTIL_PKG_STATUS_LOAD_FAILED ,
  DTTR_UTIL_PKG_STATUS_UNKNOWN_ENTRY_KIND , DTTR_UTIL_PKG_STATUS_DECODE_UNSUPPORTED , DTTR_UTIL_PKG_STATUS_BOUNDS_INVALID
}
 Per-visit and whole-walk status values. More...
enum  DTTR_Util_PkgVisitAction {
  DTTR_UTIL_PKG_VISIT_CONTINUE = 0 , DTTR_UTIL_PKG_VISIT_RECURSE , DTTR_UTIL_PKG_VISIT_LOAD_AND_RECURSE , DTTR_UTIL_PKG_VISIT_SKIP_SUBTREE ,
  DTTR_UTIL_PKG_VISIT_STOP
}
 Visitor return value controlling traversal below the current visit. More...

Functions

static DTTR_PCDOGS_T_Level_RuntimeDataDTTR_Util_LevelDataAsRuntimeDataMutable (void *ptr_)
static const DTTR_PCDOGS_T_Level_RuntimeDataDTTR_Util_LevelDataAsRuntimeDataConst (const void *ptr_)
static DTTR_PCDOGS_T_Actor_StateDTTR_Util_GetActiveActor (const DTTR_Core_Context *ctx)
static bool DTTR_Util_SameActor (const DTTR_PCDOGS_T_Actor_State *left, const DTTR_PCDOGS_T_Actor_State *right)
DTTR_UTIL_API DTTR_Util_PkgWalkOptions DTTR_Util_PkgWalk_DefaultOptions ()
DTTR_UTIL_API DTTR_Util_PkgWalkResult DTTR_Util_PkgWalk (const DTTR_Core_Context *ctx, const DTTR_Util_PkgWalkOptions *options, DTTR_Util_PkgVisitor visitor, void *userdata)
DTTR_UTIL_API const char * DTTR_Util_PkgVisitStatusName (DTTR_Util_PkgVisitStatus status)
static const DTTR_PCDOGS_T_PKG_TOCEntryDTTR_Util_PkgVisit_AsTOCEntry (const DTTR_Util_PkgVisit *visit)
static const voidDTTR_Util_PkgVisit_AsLoadedEntry (const DTTR_Util_PkgVisit *visit)
static const DTTR_PCDOGS_T_Level_RuntimeDataDTTR_Util_PkgVisit_AsLevelRuntimeData (const DTTR_Util_PkgVisit *visit)
static const DTTR_PCDOGS_T_Mesh_NodeDTTR_Util_PkgVisit_AsMeshNode (const DTTR_Util_PkgVisit *visit)
static const DTTR_PCDOGS_T_Material_EntryDTTR_Util_PkgVisit_AsMaterialEntry (const DTTR_Util_PkgVisit *visit)
static const DTTR_PCDOGS_T_Scene_NodeDTTR_Util_PkgVisit_AsSceneNode (const DTTR_Util_PkgVisit *visit)
static const DTTR_PCDOGS_T_Graphics_SpriteContextDTTR_Util_PkgVisit_AsSpriteContext (const DTTR_Util_PkgVisit *visit)
static const DTTR_PCDOGS_T_PKG_CollisionShapeDTTR_Util_PkgVisit_AsCollisionShape (const DTTR_Util_PkgVisit *visit)

Detailed Description

Experimental utility helpers for reverse-engineering package data.

These declarations are available through dttr_sdk.h only when DTTR_SDK_ENABLE_UNSTABLE is defined. These declarations can change at source or ABI level while package layouts are still being mapped.

Definition in file dttr_util_unstable.h.

Macro Definition Documentation

◆ DTTR_UTIL_API

#define DTTR_UTIL_API   extern

Definition at line 22 of file dttr_util_unstable.h.

◆ DTTR_UTIL_PKG_DEFAULT_TOC_COUNT

#define DTTR_UTIL_PKG_DEFAULT_TOC_COUNT   138u

Experimental package traversal helpers for reverse-engineering workflows. These declarations may change while package layouts are still being mapped.

Definition at line 72 of file dttr_util_unstable.h.

Referenced by DTTR_Util_PkgWalk_DefaultOptions(), and resolve_toc().

Typedef Documentation

◆ DTTR_Util_PkgFreeEntryFn

typedef void(* DTTR_Util_PkgFreeEntryFn) (const DTTR_Core_Context *ctx, int32_t toc_index, const DTTR_PCDOGS_T_PKG_TOCEntry *entry, void *entry_data, void *userdata)

Definition at line 144 of file dttr_util_unstable.h.

◆ DTTR_Util_PkgLoadEntryFn

typedef bool(* DTTR_Util_PkgLoadEntryFn) (const DTTR_Core_Context *ctx, int32_t toc_index, const DTTR_PCDOGS_T_PKG_TOCEntry *entry, void *userdata, void **out_entry, size_t *out_size, DTTR_Util_PkgVisitStatus *out_status)

Definition at line 134 of file dttr_util_unstable.h.

◆ DTTR_Util_PkgVisit

typedef struct DTTR_Util_PkgVisit DTTR_Util_PkgVisit

Definition at line 127 of file dttr_util_unstable.h.

◆ DTTR_Util_PkgVisitAction

Visitor return value controlling traversal below the current visit.

◆ DTTR_Util_PkgVisitKind

Object kind reported to a package visitor.

◆ DTTR_Util_PkgVisitor

typedef DTTR_Util_PkgVisitAction(* DTTR_Util_PkgVisitor) (const DTTR_Util_PkgVisit *visit, void *userdata)

Definition at line 129 of file dttr_util_unstable.h.

◆ DTTR_Util_PkgVisitStatus

Per-visit and whole-walk status values.

◆ DTTR_Util_PkgWalkDomain

Package subtree families that the walker can expose.

◆ DTTR_Util_PkgWalkOptions

typedef struct DTTR_Util_PkgWalkOptions DTTR_Util_PkgWalkOptions

Walker configuration. Use DTTR_Util_PkgWalk_DefaultOptions() for defaults.

◆ DTTR_Util_PkgWalkResult

typedef struct DTTR_Util_PkgWalkResult DTTR_Util_PkgWalkResult

Aggregate walk result. Non-fatal per-entry failures keep traversal moving.

Enumeration Type Documentation

◆ DTTR_Util_PkgVisitAction

Visitor return value controlling traversal below the current visit.

Enumerator
DTTR_UTIL_PKG_VISIT_CONTINUE 
DTTR_UTIL_PKG_VISIT_RECURSE 
DTTR_UTIL_PKG_VISIT_LOAD_AND_RECURSE 
DTTR_UTIL_PKG_VISIT_SKIP_SUBTREE 
DTTR_UTIL_PKG_VISIT_STOP 

Definition at line 119 of file dttr_util_unstable.h.

◆ DTTR_Util_PkgVisitKind

Object kind reported to a package visitor.

Enumerator
DTTR_UTIL_PKG_VISIT_TOC_ENTRY 
DTTR_UTIL_PKG_VISIT_LOADED_ENTRY 
DTTR_UTIL_PKG_VISIT_LEVEL_RUNTIME_DATA 
DTTR_UTIL_PKG_VISIT_MESH_NODE 
DTTR_UTIL_PKG_VISIT_MATERIAL_ENTRY 
DTTR_UTIL_PKG_VISIT_SCENE_NODE 
DTTR_UTIL_PKG_VISIT_SPRITE_ENTRY 
DTTR_UTIL_PKG_VISIT_COLLISION_SHAPE 
DTTR_UTIL_PKG_VISIT_UNSUPPORTED 

Definition at line 95 of file dttr_util_unstable.h.

◆ DTTR_Util_PkgVisitStatus

Per-visit and whole-walk status values.

Enumerator
DTTR_UTIL_PKG_STATUS_OK 
DTTR_UTIL_PKG_STATUS_INVALID_ARGUMENT 
DTTR_UTIL_PKG_STATUS_UNRESOLVED_SYMBOL 
DTTR_UTIL_PKG_STATUS_LOAD_FAILED 
DTTR_UTIL_PKG_STATUS_UNKNOWN_ENTRY_KIND 
DTTR_UTIL_PKG_STATUS_DECODE_UNSUPPORTED 
DTTR_UTIL_PKG_STATUS_BOUNDS_INVALID 

Definition at line 108 of file dttr_util_unstable.h.

◆ DTTR_Util_PkgWalkDomain

Package subtree families that the walker can expose.

Enumerator
DTTR_UTIL_PKG_DOMAIN_TOC 
DTTR_UTIL_PKG_DOMAIN_ENTRY 
DTTR_UTIL_PKG_DOMAIN_LEVEL 
DTTR_UTIL_PKG_DOMAIN_MESH 
DTTR_UTIL_PKG_DOMAIN_MATERIAL 
DTTR_UTIL_PKG_DOMAIN_SCENE 
DTTR_UTIL_PKG_DOMAIN_SPRITE 
DTTR_UTIL_PKG_DOMAIN_COLLISION 
DTTR_UTIL_PKG_DOMAIN_KNOWN_CHILDREN 
DTTR_UTIL_PKG_DOMAIN_ALL_KNOWN 

Definition at line 75 of file dttr_util_unstable.h.

Function Documentation

◆ DTTR_Util_GetActiveActor()

DTTR_PCDOGS_T_Actor_State * DTTR_Util_GetActiveActor ( const DTTR_Core_Context * ctx)
inlinestatic

Return the current active actor, or NULL when unavailable or inactive.

Parameters
ctxRuntime context for generated PCDOGS symbol calls.

Definition at line 51 of file dttr_util_unstable.h.

References ctx, DTTR_PCDOGS_F_Entity_GetActiveActorFromList, DTTR_ResultOK(), and NULL.

◆ DTTR_Util_LevelDataAsRuntimeDataConst()

const DTTR_PCDOGS_T_Level_RuntimeData * DTTR_Util_LevelDataAsRuntimeDataConst ( const void * ptr_)
inlinestatic

Const-preserving variant of the Level_Data runtime-layout cast.

Parameters
ptr_Stable opaque Level_Data pointer to cast.
Returns
Const pointer using the unstable runtime layout.

Definition at line 43 of file dttr_util_unstable.h.

◆ DTTR_Util_LevelDataAsRuntimeDataMutable()

DTTR_PCDOGS_T_Level_RuntimeData * DTTR_Util_LevelDataAsRuntimeDataMutable ( void * ptr_)
inlinestatic

Cast a stable opaque Level_Data pointer to the unstable runtime layout. The stable API keeps Level_Data opaque; this helper makes the intentional bridge explicit for callers that opt into unstable layouts.

Parameters
ptr_Stable opaque Level_Data pointer to cast.
Returns
Mutable pointer using the unstable runtime layout.

Definition at line 34 of file dttr_util_unstable.h.

◆ DTTR_Util_PkgVisit_AsCollisionShape()

const DTTR_PCDOGS_T_PKG_CollisionShape * DTTR_Util_PkgVisit_AsCollisionShape ( const DTTR_Util_PkgVisit * visit)
inlinestatic

◆ DTTR_Util_PkgVisit_AsLevelRuntimeData()

const DTTR_PCDOGS_T_Level_RuntimeData * DTTR_Util_PkgVisit_AsLevelRuntimeData ( const DTTR_Util_PkgVisit * visit)
inlinestatic

◆ DTTR_Util_PkgVisit_AsLoadedEntry()

const void * DTTR_Util_PkgVisit_AsLoadedEntry ( const DTTR_Util_PkgVisit * visit)
inlinestatic

◆ DTTR_Util_PkgVisit_AsMaterialEntry()

const DTTR_PCDOGS_T_Material_Entry * DTTR_Util_PkgVisit_AsMaterialEntry ( const DTTR_Util_PkgVisit * visit)
inlinestatic

◆ DTTR_Util_PkgVisit_AsMeshNode()

const DTTR_PCDOGS_T_Mesh_Node * DTTR_Util_PkgVisit_AsMeshNode ( const DTTR_Util_PkgVisit * visit)
inlinestatic

◆ DTTR_Util_PkgVisit_AsSceneNode()

const DTTR_PCDOGS_T_Scene_Node * DTTR_Util_PkgVisit_AsSceneNode ( const DTTR_Util_PkgVisit * visit)
inlinestatic

◆ DTTR_Util_PkgVisit_AsSpriteContext()

const DTTR_PCDOGS_T_Graphics_SpriteContext * DTTR_Util_PkgVisit_AsSpriteContext ( const DTTR_Util_PkgVisit * visit)
inlinestatic

◆ DTTR_Util_PkgVisit_AsTOCEntry()

const DTTR_PCDOGS_T_PKG_TOCEntry * DTTR_Util_PkgVisit_AsTOCEntry ( const DTTR_Util_PkgVisit * visit)
inlinestatic

◆ DTTR_Util_PkgVisitStatusName()

◆ DTTR_Util_PkgWalk()

◆ DTTR_Util_PkgWalk_DefaultOptions()

◆ DTTR_Util_SameActor()

bool DTTR_Util_SameActor ( const DTTR_PCDOGS_T_Actor_State * left,
const DTTR_PCDOGS_T_Actor_State * right )
inlinestatic

Compare non-NULL live actor pointers directly.

Parameters
leftFirst actor pointer.
rightSecond actor pointer.

Definition at line 63 of file dttr_util_unstable.h.

References NULL.