ROM sha256
9a6a47d01119f67580e48e9875207186c25efd56ff93019df331eb307cfaa5d9
WAD sha256
1d7d43be501e67d927e415e0b8f3e29c3bf33075e859721816f652a526cac771
ClickHouse version
26.7.5.10
First divergent tic (gametic)
143
First divergent frame, if a frame differs
No response
What disagrees
A mobj field
The divergence report
clickdoom: error: tic 143 mobj slot 118 m_x: 8272000 against the probe's 8245976
native diff stops on the first field, so the report names m_x. Comparing
every mobj column at that tic gives the whole set:
col slots ours probe
m_frame [118,258] [2,2] [7,7]
m_momx [118,258] [-26024,47238] [-23585,42809]
m_momy [118,258] [-77677,-113436] [-70395,-102802]
m_momz [265..271] [131072 x7] [65536 x7]
m_x [118,258] [8272000,13992912] [8245976,14040150]
m_y [118,258] [-4310912,4297488] [-4388589,4184052]
m_z [265..271] [2384896,...] [2515968,...]
m_health, m_flags, m_state and m_tics agree on every slot, so the
damage itself lands. Three separate things are missing.
m_frame on slots 118 and 258 is this report's subject. P_DamageMobj
calls P_SetMobjState, which writes the entered state's sprite, frame and tics
along with the state. The damage writes m_state (449 to 455) and m_tics,
and slot 118's state matches the probe, but m_frame stays at 2 where the
probe has 7. states gives state 455 a frame of 7, so the frame the thing
shows is the frame of the state it left.
m_sprite agrees only because states 449 and 455 share sprite 0.
The other two are separately tracked work: m_x, m_y, m_momx and m_momy
on the same two slots are P_XYMovement for a thing that is not the player,
and m_z and m_momz on slots 265 to 271 are P_ZMovement for the blood the
shots spawned.
Random draws at that tic
No response
Reproduction
# On the branch that fires the shotgun's seven shots.
make native-load
clickdoom native diff 150 \
--probe refemu/reference_traces/demo3/probe.9a6a47d01119.tsv \
--host localhost --port 8123 --password clickdoom --database clickdoom_native
# The whole column set at the tic, rather than the first field:
# SELECT arrayFilter(k -> n.m_frame[k] != p.m_frame[k], arrayEnumerate(n.m_frame))
# FROM clickdoom_native.native_state n, clickdoom_native.probe_state p
# WHERE n.tic = 143 AND p.gametic = 143
ROM sha256
9a6a47d01119f67580e48e9875207186c25efd56ff93019df331eb307cfaa5d9
WAD sha256
1d7d43be501e67d927e415e0b8f3e29c3bf33075e859721816f652a526cac771
ClickHouse version
26.7.5.10
First divergent tic (gametic)
143
First divergent frame, if a frame differs
No response
What disagrees
A mobj field
The divergence report
native diffstops on the first field, so the report namesm_x. Comparingevery mobj column at that tic gives the whole set:
m_health,m_flags,m_stateandm_ticsagree on every slot, so thedamage itself lands. Three separate things are missing.
m_frameon slots 118 and 258 is this report's subject.P_DamageMobjcalls
P_SetMobjState, which writes the entered state's sprite, frame and ticsalong with the state. The damage writes
m_state(449 to 455) andm_tics,and slot 118's state matches the probe, but
m_framestays at 2 where theprobe has 7.
statesgives state 455 a frame of 7, so the frame the thingshows is the frame of the state it left.
m_spriteagrees only because states 449 and 455 share sprite 0.The other two are separately tracked work:
m_x,m_y,m_momxandm_momyon the same two slots are
P_XYMovementfor a thing that is not the player,and
m_zandm_momzon slots 265 to 271 areP_ZMovementfor the blood theshots spawned.
Random draws at that tic
No response
Reproduction