# Commands whose replies depend on time (a tick count, a timer state), which the IPC replay
# (mh4n_ipc_replay, N1-11) and `tools/compare_ipc_traces.py --ignore` compare by result only.
#
# One command per line:
#
#     <session> <header>   # why the reply depends on time
#
#   <session>  the trace's session name: `fs:USER`, or `fs:USER/file` for every file session of fs:USER
#              (the instance number of `fs:USER/file#3` is left out)
#   <header>   the request's header word in hex, with or without 0x (command id in the top 16 bits)
#
# `#` starts a comment; empty lines are skipped. Only the orchestrator edits this file: a WP that finds
# such a command proposes the line, with its reason, in its report.

# N0-28 (2026-10-21): the commands the pair jit / recomp shows as time-dependent on G1, G2 and G6 (docs/native/cross-model.md,
# section 5.1). No fs: command is listed (D52).
gsp::Gpu 0x000c0000   # TriggerCmdReqQueue: a loop that triggers the GPU command queue runs a number of passes set by the clock (thread 9: 1727 requests on recomp, 11907 on jit in G1; the main thread's count and place among its other requests differ too)
gsp::Gpu 0x00080082   # FlushDataCache: the main thread flushes once per pass of its frame loop, and the passes per frame depend on the clock (G1 3669/3672 requests, G6 19719/19712, G2 35664/35468)
dsp::DSP 0x00130082   # FlushDataCache of the audio thread: one per audio buffer queued, so the count follows how far the audio got when the movie was skipped and when the run ended (2, 2 and 6 fewer on jit; the thread's other requests are equal)
y2r:u 0x00010040   # intro movie: one Y2R conversion set-up per movie frame; the frame count is the movie's playing time up to the scripted skip, 232 on recomp and 230 on jit in G1, G2 and G6
y2r:u 0x00030040   # intro movie: as 0x00010040 (232/230 requests)
y2r:u 0x00050040   # intro movie: as 0x00010040 (232/230 requests)
y2r:u 0x00070040   # intro movie: as 0x00010040 (232/230 requests)
y2r:u 0x000d0040   # intro movie: as 0x00010040 (233/231 requests)
y2r:u 0x00100102   # intro movie: as 0x00010040 (232/230 requests)
y2r:u 0x00110102   # intro movie: as 0x00010040 (232/230 requests)
y2r:u 0x00120102   # intro movie: as 0x00010040 (232/230 requests)
y2r:u 0x00180102   # intro movie: as 0x00010040 (232/230 requests)
y2r:u 0x001a0040   # intro movie: as 0x00010040 (232/230 requests)
y2r:u 0x001c0040   # intro movie: as 0x00010040 (232/230 requests)
y2r:u 0x001e0100   # intro movie: as 0x00010040 (232/230 requests)
y2r:u 0x00210040   # intro movie: as 0x00010040 (232/230 requests)
y2r:u 0x00220040   # intro movie: as 0x00010040 (232/230 requests)
y2r:u 0x00260000   # intro movie: as 0x00010040 (232/230 requests)

# N0-30 (2026-10-22): the quest sessions G3 and G4 (docs/native/cross-model.md, section 9; D82). No fs: read is listed (D52).
nwm::UDS 0x001d0044   # BeginHostingNetwork: the 264-byte network struct holds a 16-bit value that differs on every call between jit and recomp (11 calls in G3, 2 in G4; it also changes from call to call inside one run, as the game's random generator does) and a 16-bit counter that rises by about one per emulated second (a few units apart between the backends); the reply is a result code only
nwm::UDS 0x00100042   # SetApplicationData: the 200-byte beacon data holds the same 16-bit value (at another offset) and a second counter field that follows the clock; the reply is a result code only
ir:USER 0x000d0042   # N0-30 second pass (2026-10-23, D93) the poll loop on the ir:USER block (G8: 6,725 requests on recomp, 6,728 on jit): the count at the end of a run follows the clock; every request before the tail is equal; the reply is a result code only
ir:USER 0x00190040   # N0-30 second pass (D93) the request that alternates with 0x000d0042 in the same loop (6,724 on recomp, 6,727 on jit): same cause; the reply is a result code only
frd:u 0x001c0042   # N1-26 (2026-10-22, D86) UnscrambleLocalFriendCode: its 12-byte input is the scrambled local friend code that the game draws once per boot from its clock (one value in the 11 calls of a run, a different one in every native run, one value in the reference runs of G3 and G4); the 8-byte reply and the result are equal
cfg:u 0x00010082   # N1-26 (2026-10-22, D86) GetConfigInfoBlk: a poll whose count at the end of a run follows the clock (98 requests in the recording of G3, 97 to 99 in ten native runs); the replies are equal
fs:USER 0x080d0144   # ControlArchive (7 requests in G3 and in G4): its 1-byte input buffer is a byte of the game's own memory that the game never sets before the call (the second and third requests differ between jit and recomp, the other four are equal); the output byte and the result are equal on both sides in every request, and the N1-12 replays (`mh4n_ipc_replay`, which do not read this file) can check the native answer to each of the 7 against the recording
