Appearance
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_HAOWL_ADM_BT_ACCUMAOWL_ADM_BT_ORIGINALAOWL_ADM_BT_USEIMITAOWL_ADM_CAM_MAXFAILAOWL_ADM_DEFAULTSAOWL_ADM_F_DEADAOWL_ADM_F_ISAIAOWL_ADM_F_ONSCREENAOWL_ADM_GETPOS_RVAAOWL_ADM_HK_MAXFAILAOWL_ADM_MAGICAOWL_ADM_MAX_ENTITIESAOWL_ADM_NAME_LENAOWL_ADM_OFF_MGR_CAMAOWL_ADM_PB_BODYXFAOWL_ADM_PL_BONESAOWL_ADM_POS_ALLZEROAOWL_ADM_POS_CODESAOWL_ADM_POS_HOLDAOWL_ADM_POS_IMITATEDAOWL_ADM_POS_LIMITAOWL_ADM_POS_MAXAOWL_ADM_POS_NANAOWL_ADM_POS_NILBONESAOWL_ADM_POS_NILXFORMAOWL_ADM_POS_NOCALLAOWL_ADM_POS_OKAOWL_ADM_POS_RANGEAOWL_ADM_POS_UNREADABLEAOWL_ADM_QUERY_LENAOWL_ADM_RDC_AUDIT_EVERYAOWL_ADM_RDC_CHUNK_SHIFTAOWL_ADM_RDC_MIN_POS_SIZEAOWL_ADM_RDC_NEG_TTL_MSAOWL_ADM_RDC_POS_TTL_MSAOWL_ADM_RDC_SETSAOWL_ADM_RDC_WAYSAOWL_ADM_REGION_NAMEAOWL_ADM_RESULT_LENAOWL_ADM_RVA_CAM_MAINAOWL_ADM_RVA_CAM_MGRAOWL_ADM_RVA_CAM_PROJAOWL_ADM_RVA_CAM_W2CAOWL_ADM_RVA_GETKEYDOWNAOWL_ADM_STATUS_LENAOWL_ADM_VERSIONAOWL_APBAOWL_APE
Types
struct AowlAdminEntitystruct AowlAdminShared
Functions
| Signature | Line |
|---|---|
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 |

