Repository navigation
Framework code and the address table disagree on eight values #16
Copy link
Copy link
Open
Labels
bugSomething isn't workingSomething isn't working
Description
Naming every address from addresses.toml showed places where the framework and the table disagree on what a value means. The names follow the table; the code's values are unchanged, so each one is either a bug in the code or an error in the table.
0x09998D50: the code (mhfu_world_player_pos, nameplates, freecam) treats it as the camera's look-at, the player's position. The table says it is the camera eye (CAM_VIEW_EYE), with the look-at at0x09998D60. freecam writes the look-at there. Settled: the table is right, the eye sits ~490 units from the hunter (mhfu.player_pos returns the camera eye, not the hunter #26), and the code fix is mhfu.player_pos returns the camera eye, not the hunter #26.0x09998E10: the code calls it eye − target; the table (CAM_OFFSET) says look-at − eye.ENTITY+0x334: the code calls it the AI state (u8, 2 = engaged), andforce_aggro, the Luaai_statebinding and combat's clone log use it that way. The table saysANIM_SPEED, u16[3].ENTITY+0x364:entity.cppwrites a combatant index; per the registrar it holdsCOMBAT_NODE + 0x1C.- Likely memory corruption:
entity.cppand lua_host'scombat.cppcopy0x110bytes per collision node, but the builder they call allocates0xE0-byte nodes, so each copy runs0x30bytes into the next. - Entity size:
entity.cppclones0x7A00bytes; em_vhook bounds stores to0x800, what the em factory allocates. - Screen state 22 is taken as the village (
MHFU_WORLD_SCREEN_VILLAGE; it gates the volatile interposer). The table and the automation notes say the village reads 0 or 113. Settled: 22 is the boot's load around the save read, the village 0 or 113 (six cold boots, feat(framework): village NPCs of our own, and a Zinogre that follows the hunter #62); the ms0 gate that still opens on 22 is Log, hot reload and the spawn poll pause for the whole village #22. 0x09B661E8(TIGREX_ATTACK_SPAWN): lua_host calls it the per-frame combat-node builder; the table says it spawns an attack volume. Settled: the table is right; it spawns an attack node by attack id, and the move player spawns our attacks through it (feat: hybrid ports wave 2: studio clips, walking, hit push, every clip in game, engine walls #52, Hybrid ports wave 3: the move player, travel, turns and walls, lane screenshots #55). lua_host's clone path still uses it as a node builder.
Unsettled fields: QUEST_TARGET.MEMBER_FLAGS, QUEST_LIST_NODE.FLAG/RESERVED, CAM_VIEW_MATRIX and CAM_PROJ_MATRIX 0x80 apart, and lua_host's vt[0x3C].
- Settle each on a running game, and fix whichever side is wrong
- 5 first: measure the node size and copy that many bytes
Done when the code and the table agree on every item above.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working
Activity