Files
benilla-octo/reference/1.12-glue-events.tsv
T
Sam SungandClaude Opus 5.5 a9dd325bb7 A glue Lua state with the reference glue surface, events and ModelFFX (#963)
The first piece of running the stock GlueXML: benilla had no glue Lua state, and no reference data for its surface.

In 1.12.1 the glue state holds the base set (`0x7039e0`) and seven registrars (`0x46abb0`): 119 functions, 105 of them glue-only, with 26 glue events (`0xb41e70`, `0x46a88f`). `RegisterEvent` matches names case-insensitively and drops an unknown one (`0x702140`). The glue builds the 13 base frame types plus `ModelFFX` (`0x46a4fe`), a Model with its own show and paint (`0x46fa00`); the in-game types come only at world entry (`0x495940`).

`reference/` gains the glue event and surface tables, generated and checked against the shapes table. `UiScript::new_glue()` builds that state; a gate holds its globals to the table, with the 108 unbuilt names listed. Nothing in the app changes yet.

Part of #856

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 07:38:02 +07:00

2.3 KiB

1# The glue screens' FrameScript event table of the 1.12.1 client (WoW.exe build 5875): eventId -> name.
2# Source: the 26 `mov dword [0xb41e70 + 4*id], imm32` writes of 0x46cc60 (0x46cc60-0x46cd5a, called
3# once at startup from 0x402af8), each imm32 the address of the event's name string. The glue
4# builder 0x46a7b0 hands the array to 0x703d90 (`mov edx,0x1a; mov ecx,0xb41e70; call 0x703d90`
5# at 0x46a885-0x46a88f), which rebuilds the runtime dispatch table [0xceef68] from it wholesale,
6# as UI_Init does with the in-game array 0xbe1198 (`1.12-event-catalog.tsv`). So while the glue
7# state runs, these 26 are the only events, the id fired by FrameScript_SignalEvent 0x703e50 /
8# 0x703f50 indexes this table, and the same integer names a different event in-game.
9# Registration: `RegisterEvent` 0x774a40 -> 0x702140 walks the table and compares names with
10# 0x64a4c0 (-> 0x414310, case-insensitive); a name off the table matches nothing and is dropped
11# without an error. `UnregisterEvent` 0x774b30 -> 0x702280 matches the same way.
12# Vendored from the client's bytes; no generator for it lives in this repo.
13#
14# name_va the name string's address (the imm32).
15# write_va the instruction in 0x46cc60 that stores it.
16idnamename_vawrite_va
170SET_GLUE_SCREEN0x837bec0x46cc60
181START_GLUE_MUSIC0x837bd80x46cc6a
192DISCONNECTED_FROM_SERVER0x837bbc0x46cc74
203OPEN_STATUS_DIALOG0x837ba80x46cc7e
214UPDATE_STATUS_DIALOG0x837b900x46cc88
225CLOSE_STATUS_DIALOG0x837b7c0x46cc92
236ADDON_LIST_UPDATE0x837b680x46cc9c
247CHARACTER_LIST_UPDATE0x837b500x46cca6
258UPDATE_SELECTED_CHARACTER0x837b340x46ccb0
269OPEN_REALM_LIST0x837b240x46ccba
2710GET_PREFERRED_REALM_INFO0x837b080x46ccc4
2811UPDATE_SELECTED_RACE0x837af00x46ccce
2912SELECT_LAST_CHARACTER0x837ad80x46ccd8
3013SELECT_FIRST_CHARACTER0x837ac00x46cce2
3114GLUE_SCREENSHOT_SUCCEEDED0x837aa40x46ccec
3215GLUE_SCREENSHOT_FAILED0x837a8c0x46ccf6
3316PATCH_UPDATE_PROGRESS0x837a740x46cd00
3417PATCH_DOWNLOADED0x837a600x46cd0a
3518SUGGEST_REALM0x837a500x46cd14
3619SUGGEST_REALM_WRONG_PVP0x837a380x46cd1e
3720SUGGEST_REALM_WRONG_CATEGORY0x837a180x46cd28
3821SHOW_SERVER_ALERT0x837a040x46cd32
3922FRAMES_LOADED0x8379f40x46cd3c
4023FORCE_RENAME_CHARACTER0x8379dc0x46cd46
4124SHOW_SURVEY_NOTIFICATION0x8379c00x46cd50
4225PLAYER_ENTER_PIN0x8379ac0x46cd5a