urt-rs / docs /research /QVM_RELOAD_REQUEST.md
nmarshall's picture
qvm: reload requests
19bbb42
|
Raw History Blame Contribute Delete
1.73 kB

Reload request gates and timer animation event effects

RE-563. Reproduce with python3 scripts/analyze_qvm_reload_request.py; check with python3 scripts/test_qvm_reload_request.py. The machine report retains source identity and bounded fixtures.

Complete49652 runs to49916 with actual timed torso39552 and event39238 children. Selected weapon is the low byte of PS312+4×PS144; magazine is bits8..15 and reserve bits24..31. Button32, positive ID, magazine unequal to configured capacity, nonzero reserve, no PS12 bit8, no PS220 bits1024/8 and PS148 unequal2 are required. IDs14/23 additionally reject a nonempty magazine with nonzero PS148. Capacity is an equality test: an explicitly supplied over-capacity magazine still passes this predicate.

Accepted requests set state bit8 and replace PS44 with record4056+432×id, adding4060+432×id only when argument8 is nonzero. An existing positive weapon timer does not gate this function. Class4+ requests timed torso57, otherwise56, followed by event3. Timed-animation durations are supplied records, default321, with0/−1 fixtures. Kind3 blocks the torso animation child but the duration store still occurs. The body does not change packed ammunition or inventory.

108 finite fixtures cover initialized records and marked synthetic overrides. Remaining work: actual reload completion/ammo transfer, full weapon state machine, animation asset matching, source-order caller interference and live configuration validation.

No original executable/full QVM/native collision/physics/rendering executes. Native responses and legal input domains are supplied or unverified where stated; full runtime/macOS/Linux Rust/Bevy/Solari gameplay remains open.