|
Download docs/research/QVM_WEAPON_BATCH.md from nmarshall/urt-rs: direct link, hf CLI and curl.
- Browser
- Download file 6.11 kB
-
https://huggingface.co/nmarshall/urt-rs/resolve/main/docs/research/QVM_WEAPON_BATCH.md
- Command line
-
hf download hf://nmarshall/urt-rs/docs/research/QVM_WEAPON_BATCH.md
-
curl -L -o QVM_WEAPON_BATCH.md https://huggingface.co/nmarshall/urt-rs/resolve/main/docs/research/QVM_WEAPON_BATCH.md
6.11 kB
| # Weapon-state research batch: RE-571–580 | |
| Ten separately committed tasks extend the previous [consumer batch](QVM_CONSUMER_BATCH.md). They recover weapon lookup, selection, transition completion, a native-query contract and the pre-firing50746 branches through51801. Source identity, bounded instruction traces, independent state oracles and synthetic/native response limits accompany each report. | |
| | Task | Recovered scope | Evidence | | |
| | --- | --- | --- | | |
| | RE-571 | Complete31691 first16-slot weapon lookup | [Lookup](QVM_WEAPON_LOOKUP.md) | | |
| | RE-572 | Complete48798 selection request and transition effects | [Selection](QVM_WEAPON_SELECT.md) | | |
| | RE-573 | Complete49028 selected/fallback lookup and raising transition | [Completion](QVM_WEAPON_COMPLETE.md) | | |
| | RE-574 | Complete50525 ordered input gates and native trace/event contract | [Special query](QVM_SPECIAL_QUERY.md) | | |
| | RE-575 | Actual50746 prefix through selection handoff50922 | [Caller](QVM_WEAPON_SELECTION_CALLER.md) | | |
| | RE-576 |50923..51206 guards, timer floors and state512 cancellation | [Guards](QVM_WEAPON_GUARDS.md) | | |
| | RE-577 |51207..51364 ID27 refill, cadence and interaction re-entry | [Ready consumer](QVM_WEAPON_READY.md) | | |
| | RE-578 |51365..51632 ammo transfer and actual reload re-entry | [Reload completion](QVM_RELOAD_COMPLETE.md) | | |
| | RE-579 |51633..51801 lowering/raising completion and frame gates | [Phases](QVM_WEAPON_PHASES.md) | | |
| | RE-580 | Source-ordered pre-firing weapon paths and main suffix resumed only after actual return | [Return chains](QVM_WEAPON_RETURN_CHAINS.md) | | |
| ## Findings that affect the port | |
| - Weapon lookup and item lookup use different16-slot arrays, at PS312 and PS376 respectively. Weapon records match low-byte ID to the full requested argument. | |
| - Selection starts state2 and does not change the active slot. Completion changes the slot, sets state1 and adds250 to the timer. Missing command ID falls back to1; a missing fallback is not checked before storing−1. Checked Rust handling requires an explicit policy backed by runtime evidence. | |
| - Two continuation guards literally assign localID12 on fallback branches. The shipped instruction behavior is documented without guessing intended C logic. | |
| - Incremental reload adds one modulo256 to the magazine; replacement reload writes configured capacity. Both subtract one modulo256 from reserve. The reserve unit is not established by that arithmetic alone. | |
| - Reload completion clears its flag before calling reload request with argument0. Held input can restart a reload under the actual child gates, without the extra reload timer component. | |
| - Phase completion uses a different torso table from idle selection: class4 always requests72 here, with no tag22 exception. | |
| - The parent keeps the mode local decoded before49327 even if packed mode changes afterward. Composition must preserve the local instead of reconstructing it from the new packed word. An explicitly supplied zero switch timer lets a fixture reach this otherwise gated boundary. | |
| - Helper50525 consumes trace reply contents+48 and event parameter+52, but native geometry and the gameplay identity of that parameter remain unverified. | |
| ## Integration boundary | |
| RE-580 executes54444..54451 reload/interaction, then composes50747..51801 in the same parent local frame. Paths reaching the actual void epilogue53046 can resume54455..54463 torso/locomotion/water consumers. Paths reaching51802 keep the parent suspended. This replaces the previous blanket weapon-prefix gap for the recovered return paths; it does not invent a return from the still-unrecovered firing body. | |
| The void epilogue/parent POP are explicit source boundary bridges; this is not a full VM interpreter. Earlier main setup, clock, timer, movement and environment effects are supplied rather than composed here. The final native vector snap54471 is omitted. Successive standalone calls are not claimed as complete game ticks. Native trace records and animation durations remain supplied fixtures. No original game executable or native library runs, and no Rust gameplay/rendering/platform work is counted as completed by this batch. | |
| The baseline799 tests gains40 independent checks. Every report is reproducible below the2MiB normal-Git cap. The asset filters remain in force and originals remain outside normal Git. | |
| ## Next ten concrete tasks | |
| 1. Recover51802..52084 mode-flag8 charge/hold/release and cancellation, including50309 availability handoff and requested-weapon exceptions. | |
| 2. Recover52085..52153 state/availability failure, ID27 exception, event29 and timer+500. | |
| 3. Recover52154+ ammunition decrement and mode-flag4 exception, retaining packed ID/mode/reserve and byte boundaries. | |
| 4. Partition the remaining52253..53045 firing branches by return/callee boundaries and inventory every child/native request before interpreting them. | |
| 5. Recover mode delays, burst counters and state writes after firing without presuming projectile/hitscan outcomes. | |
| 6. Recover remaining firing-event parameters, recoil/spread/aim effects and native ABI consumers; compare legal configuration writers with initialized image records. | |
| 7. Compose complete50746 calls only when all reached firing children are recovered; add real multi-tick selection/reload/firing scenarios with actual timer/environment consumers. | |
| 8. Recover final main native vector snapping54471 and compose the complete main tick, preserving byte inputs, locals and all event/animation order. | |
| 9. Capture original-execution references and collision-consistent responses; map numeric weapon/animation/event identities to actual assets and validate legal input domains. | |
| 10. Continue the broader native/DLL/protocol/rendering/content work and first Rust/Bevy/Solari runtime slice on macOS/Linux. Bounded research coverage is not playable-game completion. | |
| The subsequent [RE-582–591 firing batch](QVM_FIRING_BATCH.md) closes the finite50746 body and connects actual outer request publication. The remaining51802+ gap above describes this earlier report's scope; native shot consumers, complete movement ticks and reference/platform gameplay remain open. | |