Skip to content

aowlspt_admin.h

Source: abi/aowlspt_admin.h — 2134 lines, 115 file-scope functions.

What this header owns

Reproduced verbatim from the header's own banner comment — these notes are frequently the only written record of why the subsystem is shaped the way it is.

text
 aowlspt_admin.h -- the shared surface between the admin/cheat mod and the
native D3D11 HUD that draws it inside the game's Present hook.

## Why this file exists

The admin cheats split across two modules and two threads, and on this client
build the split is forced rather than chosen:

  * The managed Unity-thread bridge is dead on build 1.1.0.1.46777 -- the
    runtime `MethodInfo.methodPointer` is null/stripped for the per-frame
    methods an anti-cheat cares about, so calling a managed game method
    (`il2cpp_runtime_invoke` / a bound method pointer) is not available. What
    still works is **reading and writing object memory by field offset**
    (`il2cpp_field_get_offset` -> `*(T*)(object + offset)`), which is a plain
    memory access and needs no Unity thread and no method pointer.

  * So the **producer** (`mods/admin`) reads the world by field offset -- on
    any thread, since a memory read is thread-agnostic -- projects every
    player to screen, and publishes the result here. It calls **no** managed
    method.

  * The **consumer** is the D3D11 HUD in `abi/aowlspt_overlay.h`, drawn once a
    frame inside the game's own `IDXGISwapChain::Present` -- the same place
    Steam/Discord/RivaTuner draw, and the same place the overlay and the
    graphics post-process already draw. It reads the published frame and draws
    boxes/lines/text. This is a HUD draw on the game's frame, not the vetoed
    mod-manager UI.

Two modules cannot share a C `static` global, so the state they share lives in
a named shared-memory region both map by name. It carries the toggles (the F6
menu writes, the mod reads), a seqlock-protected frame of pre-projected
entities (the mod writes, the HUD reads), a capability mask + status line so
the menu can say "unavailable" honestly, and the menu's own open/selection
state so the F6 keypress (captured in the overlay WndProc) and the draw agree.

## Safety

Pure Win32 + stdint; no overlay call, no IL2CPP call. Every field the consumer
reads is bounded and the frame is a seqlock, so a half-written frame is
retried, not drawn. If the mod never maps the region, the HUD maps an empty
one, every capability bit is 0, and the menu draws every mode "unavailable" --
safe by default. Nothing here can fault the game: an absent or stale producer
is a HUD that draws nothing, never a crash.

Constants

  • AOWLSPT_ADMIN_H
  • AOWL_ADM_BT_ACCUM
  • AOWL_ADM_BT_ORIGINAL
  • AOWL_ADM_BT_USEIMIT
  • AOWL_ADM_CAM_MAXFAIL
  • AOWL_ADM_DEFAULTS
  • AOWL_ADM_F_DEAD
  • AOWL_ADM_F_ISAI
  • AOWL_ADM_F_ONSCREEN
  • AOWL_ADM_GETPOS_RVA
  • AOWL_ADM_HK_MAXFAIL
  • AOWL_ADM_MAGIC
  • AOWL_ADM_MAX_ENTITIES
  • AOWL_ADM_NAME_LEN
  • AOWL_ADM_OFF_MGR_CAM
  • AOWL_ADM_PB_BODYXF
  • AOWL_ADM_PL_BONES
  • AOWL_ADM_POS_ALLZERO
  • AOWL_ADM_POS_CODES
  • AOWL_ADM_POS_HOLD
  • AOWL_ADM_POS_IMITATED
  • AOWL_ADM_POS_LIMIT
  • AOWL_ADM_POS_MAX
  • AOWL_ADM_POS_NAN
  • AOWL_ADM_POS_NILBONES
  • AOWL_ADM_POS_NILXFORM
  • AOWL_ADM_POS_NOCALL
  • AOWL_ADM_POS_OK
  • AOWL_ADM_POS_RANGE
  • AOWL_ADM_POS_UNREADABLE
  • AOWL_ADM_QUERY_LEN
  • AOWL_ADM_RDC_AUDIT_EVERY
  • AOWL_ADM_RDC_CHUNK_SHIFT
  • AOWL_ADM_RDC_MIN_POS_SIZE
  • AOWL_ADM_RDC_NEG_TTL_MS
  • AOWL_ADM_RDC_POS_TTL_MS
  • AOWL_ADM_RDC_SETS
  • AOWL_ADM_RDC_WAYS
  • AOWL_ADM_REGION_NAME
  • AOWL_ADM_RESULT_LEN
  • AOWL_ADM_RVA_CAM_MAIN
  • AOWL_ADM_RVA_CAM_MGR
  • AOWL_ADM_RVA_CAM_PROJ
  • AOWL_ADM_RVA_CAM_W2C
  • AOWL_ADM_RVA_GETKEYDOWN
  • AOWL_ADM_STATUS_LEN
  • AOWL_ADM_VERSION
  • AOWL_APB
  • AOWL_APE

Types

  • struct AowlAdminEntity
  • struct AowlAdminShared

Functions

SignatureLine
char aowl_admin_mode_name(int32_t bit)106
int32_t aowl_admin_row_is_toggle(int32_t row)142
char aowl_admin_row_name(int32_t row)146
AowlAdminShared aowl_admin_map(void)280
int32_t aowl_admin_toggle_get(AowlAdminShared* s, int32_t bit)312
void aowl_admin_toggle_set(AowlAdminShared* s, int32_t bit, int32_t on)316
void aowl_admin_toggle_flip(AowlAdminShared* s, int32_t bit)324
int32_t aowl_admin_capable(AowlAdminShared* s, int32_t bit)327
int32_t aowl_admin_menu_open(AowlAdminShared* s)331
void aowl_admin_set_screen(AowlAdminShared* s, int32_t w, int32_t h)335
int32_t aowl_admin_get_w(AowlAdminShared* s)340
int32_t aowl_admin_get_h(AowlAdminShared* s)341
void aowl_admin_menu_toggle(AowlAdminShared* s)342
void aowl_admin_menu_move(AowlAdminShared* s, int32_t delta)345
int32_t aowl_admin_spawn_busy(AowlAdminShared* s)362
int32_t aowl_admin_spawn_count(AowlAdminShared* s)365
int32_t aowl_admin_spawn_condition(AowlAdminShared* s)373
int32_t aowl_admin_spawn_query(AowlAdminShared* s, char* out, int32_t cap)383
void aowl_admin_query_putc(AowlAdminShared* s, int32_t ch)403
void aowl_admin_query_backspace(AowlAdminShared* s)416
void aowl_admin_spawn_adjust(AowlAdminShared* s, int32_t row, int32_t dir)427
void aowl_admin_spawn_submit(AowlAdminShared* s)449
char aowl_admin_spawn_result(AowlAdminShared* s)472
int32_t aowl_admin_query_len(AowlAdminShared* s)481
int32_t aowl_admin_query_at(AowlAdminShared* s, int32_t i)489
int32_t aowl_admin_spawn_pending(AowlAdminShared* s)497
void aowl_admin_spawn_note(AowlAdminShared* s, const char* text)518
int32_t aowl_admin_spawn_inflight(AowlAdminShared* s)529
void aowl_admin_spawn_done(AowlAdminShared* s, int32_t req, const char* text)537
void aowl_admin_menu_activate(AowlAdminShared* s)552
void aowl_admin_seed_defaults(AowlAdminShared* s)568
void aowl_admin_set_capability(AowlAdminShared* s, uint32_t mask)573
void aowl_admin_set_inraid(AowlAdminShared* s, int32_t v)576
void aowl_admin_set_status(AowlAdminShared* s, const char* text)579
void aowl_admin_frame_begin(AowlAdminShared* s, int32_t w, int32_t h)586
void aowl_admin_frame_add(AowlAdminShared* s, float cx, float top, float bottom, float health, float maxHealth, float distance, int32_t side, uint32_t flags, const char* name)593
void aowl_admin_frame_commit(AowlAdminShared* s)607
int32_t aowl_admin_snapshot(AowlAdminShared* s, AowlAdminShared* out)617
int32_t aowl_admin_readable_raw(const void* p, int32_t size)651
void aowl_admin_rdc_flush(void)760
int32_t aowl_admin_rdc_pred(const MEMORY_BASIC_INFORMATION* mbi, uintptr_t a, uintptr_t need)770
uint32_t aowl_admin_rdc_set_of(uintptr_t tag)782
int32_t aowl_admin_readable(const void* p, int32_t size)790
int64_t aowl_admin_rdc_hits(void)867
int64_t aowl_admin_rdc_misses(void)868
int64_t aowl_admin_rdc_flushes(void)869
int64_t aowl_admin_rdc_uncacheable(void)870
int64_t aowl_admin_rdc_evict_live(void)871
int64_t aowl_admin_rdc_expired(void)872
int64_t aowl_admin_rdc_audits(void)873
int64_t aowl_admin_rdc_disagree(void)874
void aowl_admin_rp(const void* o, int32_t off)875
int32_t aowl_admin_ri(const void* o, int32_t off)882
float aowl_admin_rf(const void* o, int32_t off)889
void aowl_admin_wf(void* o, int32_t off, float v)896
int32_t aowl_admin_rb(const void* o, int32_t off)910
int32_t aowl_admin_wb(void* o, int32_t off, int32_t v)917
void aowl_admin_gw_resolve(void)977
void aowl_admin_gameworld(void)991
int32_t aowl_admin_gw_state(void)1004
int32_t aowl_admin_godmode(int32_t on, uint32_t rva)1011
int32_t aowl_admin_god_is_on(void)1047
int32_t aowl_admin_gameasm_present(void)1048
int32_t aowl_admin_pos_classify(int32_t readable, float x, float y, float z)1146
int32_t aowl_admin_pos_arm(void)1169
int32_t aowl_admin_pos_armed(void)1182
int32_t aowl_adm_rd_u8(const void* o, int32_t off, unsigned char* out)1184
int32_t aowl_admin_pos_live(void* player, float* out3)1202
void aowl_admin_pos_begin(void)1288
int32_t aowl_admin_pos_add(void* player)1294
void aowl_admin_pos_commit(void)1311
int32_t aowl_admin_pos_count(void)1343
int32_t aowl_admin_pos_gen_get(void)1344
int32_t aowl_admin_pos_stat_at(int32_t code)1345
int32_t aowl_admin_pos_get(void* player, float* x, float* y, float* z)1354
int32_t aowl_admin_project(const float* m, float x, float y, float z, int32_t w, int32_t h, float* sx, float* sy)1376
void aowl_admin_mat_mul(const float* a, const float* b, float* out)1391
void aowl_admin_bind_rva(unsigned char* base, uint32_t rva, const unsigned char* sig)1560
void aowl_admin_cam_resolve(void)1568
void aowl_admin_cam_object(void)1603
int32_t aowl_admin_cam_route_get(void)1633
int32_t aowl_admin_cam_mgr_bound(void)1634
int32_t aowl_admin_cam_main_nulls(void)1635
int32_t aowl_admin_cam_mgr_nulls(void)1636
int32_t aowl_admin_cam_fld_nulls(void)1637
int32_t aowl_admin_cam_selftest_fails(void)1638
int32_t aowl_admin_cam_state(void)1643
int32_t aowl_admin_mat_sane(const float* m)1653
int32_t aowl_admin_vp_projects(const float* view, const float* vp)1696
int32_t aowl_admin_cam_sample(void)1722
int32_t aowl_admin_cam_gen(void)1769
int32_t aowl_admin_cam_stale(void)1770
int32_t aowl_admin_cam_disabled(void)1771
int32_t aowl_admin_cam_ready(void)1778
int32_t aowl_admin_w2s(float x, float y, float z, int32_t w, int32_t h, float* sx, float* sy)1785
int32_t aowl_admin_hotkey_state(void)1849
int32_t aowl_admin_hotkey_disabled(void)1861
void aowl_admin_hotkey_note(AowlAdminShared* s, const char* text)1865
void aowl_adm_note_cat(char* msg, const char* add)1874
int32_t aowl_admin_hotkey_get(AowlAdminShared* s, int32_t row)1880
int32_t aowl_admin_hotkey_set(AowlAdminShared* s, int32_t row, int32_t kc)1888
int32_t aowl_admin_hotkey_set_name(AowlAdminShared* s, int32_t row, const char* name)1937
char aowl_admin_hotkey_name(AowlAdminShared* s, int32_t row)1960
char aowl_admin_hotkey_note_text(AowlAdminShared* s)1967
void aowl_admin_hotkey_capture_begin(AowlAdminShared* s, int32_t row)1972
void aowl_admin_hotkey_capture_cancel(AowlAdminShared* s)1977
int32_t aowl_admin_hotkey_capturing(AowlAdminShared* s)1980
int32_t aowl_admin_hotkey_reserved(int32_t kc)1993
int32_t aowl_admin_hotkey_poll(AowlAdminShared* s, int32_t enabled)2013
int32_t aowl_admin_hotkey_name_at(AowlAdminShared* s, int32_t row, int32_t i)2092
int32_t aowl_admin_hotkey_note_at(AowlAdminShared* s, int32_t i)2098
int32_t aowl_admin_hotkey_state_at(int32_t i)2102
int32_t aowl_admin_hotkey_fires(AowlAdminShared* s)2109
int32_t aowl_admin_hotkey_epoch(AowlAdminShared* s)2112
char aowl_admin_hotkey_state_text_c(void)2118

aoughwl — self-hosted platform for things n stuff. Contact / Support on Discord for access to the private backends.