File size: 6,640 Bytes
95f6040 9ff198d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | # Firing research batch: RE-582–591
Ten separate task commits extend the [weapon-state batch](QVM_WEAPON_BATCH.md). The entire finite50746 body now executes with recovered QVM children; repeated source suffix calls connect its published request to the actual outer event queue. This is not native shot simulation or full-game completion.
| Task | Scope | Findings |
| --- | --- | --- |
| RE-582 |51802..52084 charge/hold/release and ordinary input gate | [Input gate](QVM_FIRE_GATE.md) |
| RE-583 |52085..52153 availability failure/state1/ID27 exception | [Availability](QVM_FIRE_AVAILABILITY.md) |
| RE-584 |52154..52252 selected magazine debit | [Ammo](QVM_FIRE_AMMO.md) |
| RE-585 |52253..52411 firing pose priority | [Pose priority](QVM_FIRE_POSE_PRIORITY.md) |
| RE-586 | Complete52253..52729 class/tag/gait pose dispatch | [Pose](QVM_FIRE_POSE.md) |
| RE-587 |52730..52872 request publication and burst delay/counter | [Counter](QVM_FIRE_COUNTER.md) |
| RE-588 |52873..52988 resource snapshot/division/clamp/reset | [Resource](QVM_FIRE_RESOURCE.md) |
| RE-589 |52989..53045 post-debit final delay | [Delay](QVM_FIRE_DELAY.md) |
| RE-590 | Entire50746 body and actual54444..54463 main suffix | [Complete body](QVM_WEAPON_COMPLETE_BODY.md) |
| RE-591 | Actual outer reset, timer-coupled repeated main suffix calls and publication | [Sequences](QVM_FIRE_SEQUENCES.md) |
## Concrete behavior recovered
- Charge-mode availability uses packed mode, while parent branch/debit/accounting uses preserved local mode. IDs11/12 have command-weapon exceptions; literal asymmetry is retained.
- Ordinary nonzero burst counters bypass absent attack input. An unavailable non-ID27 weapon queues29, clears its counter and adds500 to the timer.
- Magazine debit preserves the other packed bytes and is suppressed by local-mode flag4. Empty magazine does not underflow.
- Pose priority precedes the class table; running-leg membership and tag22/25 select different timed requests. These remain numeric animation choices until asset mapping is verified.
- Firing publishes FRAME260=1, FRAME264=0 and PS148=3. Counter3 produces two burst delays before the normal terminal delay.
- Without flag16, resource188 is copied to PS216, incremented by signed truncated30000/capacity, upper-clamped30000 and given a mode cooldown. There is no lower clamp in that slice. Flag16 zeros all three and skips division. Capacity0 without the bypass is rejected rather than supplied a fake result.
- Final delay reads the post-debit magazine: an ordinary last round skips the timer addition; ID27 still adds it.
- Actual outer publication queues31 with FRAME264 as parameter, caching the selected low-byte ID and post-debit magazine. It runs after optional93 and21 events. The firing request can remain set across several substeps, yielding one publication at the outer boundary.
## Integration evidence
RE-590 evaluates the whole50746 body directly and compares its complete finite results against independent staged state/delay oracles. All direct call families are inventoried; no unresolved call is silently supplied a successful result. Twelve scenarios cover firing/last/empty, flag4, charge start/release, burst, lowering, reload, death, local-mode preservation and selection. Two actual six-child main suffix fixtures validate handoffs.
RE-591 uses actual reset54528..54557, timer53048, main consumer suffix54444..54463 and publication54855..54978. Four finite sequences cover:
1. Three burst substeps in one outer frame: magazines4/3/2, counters2/1/0, delays25/25/100 and one outer event31.
2. Last round followed by empty input: timer0 then500, queued31 then29, without stale request publication on the next outer frame.
3. Selection lowering/raising: slot/state/timer transitions(0,2,300)→(0,2,100)→(1,1,250)→(1,1,50)→(1,0,0), with event30 parameters0 then1.
4. Released reload with explicitly supplied shortened timer: magazine2/reserve2 becomes32/reserve1 without a firing publication.
A separate supplied publication fixture verifies93→21→31 order, parameters and unsigned ring-sequence wrap. Timers are independently checked at each handoff. The burst timing and shortened reload records are explicit fixture overrides, not claims about immutable shipped configuration.
The839-test baseline gains40 independent tests. All reports remain below the2MiB normal-Git cap and regenerate deterministically. Code/docs remain normal Git, asset filters remain in force, and no original assets enter these commits.
## Boundaries and next ten tasks
No original executable/native library, collision/physics or renderer runs. Animation durations and interaction trace replies are supplied. Repeated calls use supplied dt/buttons; scheduler clock/input cleanup, earlier main view/movement/environment setup and final native vector snap54471 are omitted. QVM function completeness does not imply exhaustive legal-state, reference, network or platform parity.
1. Locate and recover server/client event31 consumers, including how cached weapon/magazine and event parameters determine an actual firing action.
2. Recover reached projectile/hitscan, spread/recoil and ammunition side effects beyond the movement producer; inventory every unresolved child.
3. Recover trace/damage/material/contact contracts for those consumers and capture collision-consistent reference records.
4. Trace weapon/mode configuration initialization and writers; validate capacity, counter, timer, flag and resource domains against live state.
5. Map numeric weapons, torso/leg animations and event sounds to asset variants with provenance and conversion requirements.
6. Recover native vector snap54471, including actual rounding and ABI behavior from the supplied platform binaries.
7. Compose the complete53418 movement step with clock, inputs, view basis, environment, timers, movement and all six suffix consumers.
8. Compose outer54475 scheduling with the recovered step and event publication; check timestamp boundaries, substep aggregation and queue pressure.
9. Capture original/reference execution and compare legal multi-step behavior, then continue broader native/DLL/network/rendering/content coverage.
10. Start the Rust/Bevy/Solari executable slice with recorded fixture parity and measured macOS/Linux platform/rendering paths; this research does not count as a playable game.
The subsequent [RE-593–602 server firing batch](QVM_SERVER_FIRE_BATCH.md) follows event31 into server preparation and selected bounded setup handlers. It retains explicit allocation/link/query and pending shot-processing boundaries rather than claiming native shot outcomes.
|