diff --git a/src/AcDream.Core/Physics/InterpretedMotionFunnel.cs b/src/AcDream.Core/Physics/InterpretedMotionFunnel.cs
new file mode 100644
index 00000000..521298b9
--- /dev/null
+++ b/src/AcDream.Core/Physics/InterpretedMotionFunnel.cs
@@ -0,0 +1,74 @@
+using System.Collections.Generic;
+
+namespace AcDream.Core.Physics;
+
+///
+/// L.2g S2 — supporting types for the inbound CMotionInterp funnel
+/// (deviation DEV-1). Spec:
+/// docs/research/2026-07-02-s2-inbound-funnel-pseudocode.md; decomp:
+/// MovementManager::unpack_movement 0x00524440,
+/// CMotionInterp::move_to_interpreted_state 0x005289c0,
+/// apply_interpreted_movement 0x00528600, DoInterpretedMotion 0x00528360 —
+/// dispatch order validated against a LIVE retail-observer cdb trace
+/// (tools/cdb/l2g-observer.cdb).
+///
+public interface IInterpretedMotionSink
+{
+ ///
+ /// The CPhysicsObj::DoInterpretedMotion → … →
+ /// CMotionTable::GetObjectSequence backend — called for every motion
+ /// that passes contact_allows_move, in retail dispatch order
+ /// (style → forward-or-Falling → sidestep → turn → actions). The App
+ /// implementation decides how the axes map onto the visible
+ /// AnimationSequencer cycle (retaining the HasCycle fallback,
+ /// overlay routing, etc.).
+ ///
+ void ApplyMotion(uint motion, float speed);
+
+ ///
+ /// StopInterpretedMotion notification for an axis the incoming
+ /// state cleared (sidestep 0x6500000F / turn 0x6500000D). Unconditional
+ /// (no contact gate) per apply_interpreted_movement.
+ ///
+ void StopMotion(uint motion);
+}
+
+///
+/// One entry of the inbound action list (retail MotionItem /
+/// InterpretedMotionState.actions): a one-shot command with the
+/// 15-bit server action stamp + autonomy bit
+/// (u16 ((stamp & 0x7FFF) | (autonomous ? 0x8000 : 0))).
+///
+public readonly record struct InboundMotionAction(
+ uint Command, int Stamp, bool Autonomous, float Speed);
+
+///
+/// A fully-decoded inbound InterpretedMotionState: wire fields where
+/// present, retail UnPack defaults where absent
+/// (InterpretedMotionState::UnPack 0x0051f400 /
+/// ctor 0x0051e8d0). A flags=0 "empty" UM decodes to exactly
+/// — a retail-verbatim full stop.
+///
+public struct InboundInterpretedState
+{
+ public uint CurrentStyle;
+ public uint ForwardCommand;
+ public float ForwardSpeed;
+ public uint SideStepCommand;
+ public float SideStepSpeed;
+ public uint TurnCommand;
+ public float TurnSpeed;
+ public IReadOnlyList? Actions;
+
+ public static InboundInterpretedState Default() => new()
+ {
+ CurrentStyle = 0x8000003Du,
+ ForwardCommand = 0x41000003u,
+ ForwardSpeed = 1.0f,
+ SideStepCommand = 0u,
+ SideStepSpeed = 1.0f,
+ TurnCommand = 0u,
+ TurnSpeed = 1.0f,
+ Actions = null,
+ };
+}
diff --git a/src/AcDream.Core/Physics/MotionInterpreter.cs b/src/AcDream.Core/Physics/MotionInterpreter.cs
index ddb278e7..eddfa868 100644
--- a/src/AcDream.Core/Physics/MotionInterpreter.cs
+++ b/src/AcDream.Core/Physics/MotionInterpreter.cs
@@ -147,6 +147,11 @@ public enum WeenieError : uint
///
public struct LegacyRawMotionState
{
+ /// Current style / stance (retail raw_state.current_style,
+ /// offset +0x18). Adopted from the inbound InterpretedMotionState by
+ /// move_to_interpreted_state (0x005289c0 line 305944). Default
+ /// NonCombat 0x8000003D.
+ public uint CurrentStyle;
/// Forward/backward motion command (offset +0x20).
public uint ForwardCommand;
/// Speed scalar for forward motion (offset +0x28).
@@ -163,6 +168,7 @@ public struct LegacyRawMotionState
/// Initialize to the idle/ready state (1.0 speed, Ready command).
public static LegacyRawMotionState Default() => new()
{
+ CurrentStyle = 0x8000003Du,
ForwardCommand = MotionCommand.Ready,
ForwardSpeed = 1.0f,
SideStepCommand = 0,
@@ -238,6 +244,15 @@ public interface IWeenieObject
bool InqRunRate(out float rate);
/// vtable +0x3C — CanJump. Returns true if the weenie can jump at this extent.
bool CanJump(float extent);
+
+ ///
+ /// Retail CWeenieObject::IsCreature. Non-creature weenies bypass
+ /// the ground-contact gate in contact_allows_move (0x00528240)
+ /// and the run remap in adjust_motion. Players, NPCs, and
+ /// monsters are creatures — default true keeps existing implementers
+ /// retail-correct (register TS-34 tracks the adjust_motion side).
+ ///
+ bool IsCreature() => true;
}
// ── MotionInterpreter ─────────────────────────────────────────────────────────
@@ -1080,38 +1095,51 @@ public sealed class MotionInterpreter
///
public bool contact_allows_move(uint motion)
{
+ // L.2g S2 (2026-07-02): rewritten VERBATIM from the real
+ // CMotionInterp::contact_allows_move (0x00528240, pseudo-C 305471).
+ // The previous body conflated jump_charge_is_allowed (0x00527a50:
+ // CanJump + Fallen/crouch-range checks) with this gate — the
+ // 2026-06-04 deep-dive flagged the divergence; the retail-observer
+ // trace conformance run exposed it (airborne bodies must still
+ // ACCEPT Falling/Dead + turns).
+ //
+ // Retail: allowed (1) when —
+ // motion is TurnRight/TurnLeft (0x6500000D/0E), OR
+ // motion is Falling (0x40000015) or Dead-class (0x40000011), OR
+ // the weenie exists and is NOT a creature, OR
+ // gravity is off, OR
+ // the body has Contact + OnWalkable.
+ // Everything else (a gravity-bound creature without ground contact)
+ // is blocked — this is the real mechanism behind "airborne remotes
+ // keep their cycle" (K-fix17's empirical guard).
if (PhysicsObj is null)
return false;
- // Turn commands are always allowed regardless of ground contact.
- // (Decompile doesn't explicitly early-return for turns here, but
- // ACE and the general shape of the code confirm they bypass the block.)
- if (motion == MotionCommand.TurnRight || motion == MotionCommand.TurnLeft)
+ if (motion > 0x40000015u)
+ {
+ if (motion is MotionCommand.TurnRight or MotionCommand.TurnLeft)
+ return true;
+ }
+ else if (motion == MotionCommand.Falling || motion == 0x40000011u)
+ {
+ return true;
+ }
+
+ if (WeenieObj is not null && !WeenieObj.IsCreature())
return true;
- // Dead or Fallen forward-command blocks movement.
- uint fwd = InterpretedState.ForwardCommand;
- if (fwd == MotionCommand.Fallen || fwd == MotionCommand.Dead)
- return false;
-
- // Crouch / sit / sleep range (0x41000011 < fwd < 0x41000015).
- if (fwd > MotionCommand.CrouchLowerBound && fwd < MotionCommand.CrouchUpperExclusive)
- return false;
-
- // Need Gravity flag + Contact + OnWalkable for ground-based motion.
if (!PhysicsObj.State.HasFlag(PhysicsStateFlags.Gravity))
- return true; // no gravity → object can always move (swimming, flying)
+ return true;
- bool contact = PhysicsObj.TransientState.HasFlag(TransientStateFlags.Contact);
- bool onWalkable = PhysicsObj.TransientState.HasFlag(TransientStateFlags.OnWalkable);
-
- if (!contact)
+ bool grounded = PhysicsObj.TransientState.HasFlag(TransientStateFlags.Contact)
+ && PhysicsObj.TransientState.HasFlag(TransientStateFlags.OnWalkable);
+ if (!grounded)
return false;
- if (!onWalkable)
- return false;
-
- // Grounded and idle — flag as standing-long-jump candidate.
+ // PRE-EXISTING acdream side effect (not part of 0x00528240; kept for
+ // the local-player standing-long-jump path pending its own verbatim
+ // pass): grounded and idle flags the long-jump candidate.
+ uint fwd = InterpretedState.ForwardCommand;
if (fwd == MotionCommand.Ready
&& InterpretedState.SideStepCommand == 0
&& InterpretedState.TurnCommand == 0)
@@ -1252,4 +1280,147 @@ public sealed class MotionInterpreter
break;
}
}
+
+ // ══ L.2g S2 — the inbound CMotionInterp funnel (DEV-1) ════════════════
+ // Spec: docs/research/2026-07-02-s2-inbound-funnel-pseudocode.md.
+ // Dispatch order validated against the LIVE retail-observer cdb trace
+ // (tools/cdb/l2g-observer.cdb): style → forward → sidestep(-stop) →
+ // turn(-stop) → actions, wholesale per UM.
+
+ ///
+ /// True when this interpreter belongs to the LOCAL player. Retail skips
+ /// replaying AUTONOMOUS actions on the local player (they are its own
+ /// echo — move_to_interpreted_state 305977) but applies them on remotes.
+ ///
+ public bool IsLocalPlayer;
+
+ ///
+ /// CMotionInterp::server_action_stamp — 15-bit wraparound stamp
+ /// of the last applied inbound action (move_to_interpreted_state
+ /// 305953-305989).
+ ///
+ public int ServerActionStamp;
+
+ ///
+ /// CMotionInterp::move_to_interpreted_state (0x005289c0,
+ /// pseudo-C 305936): adopt the style into the raw state, FLAT-copy the
+ /// incoming interpreted state (copy_movement_from 0x0051e750 —
+ /// every axis overwritten, defaults included), re-apply the whole
+ /// movement through the sink, then replay fresh actions under the
+ /// 15-bit stamp gate.
+ ///
+ public int MoveToInterpretedState(in InboundInterpretedState ims, IInterpretedMotionSink? sink = null)
+ {
+ if (PhysicsObj is null) return 0;
+
+ RawState.CurrentStyle = ims.CurrentStyle;
+
+ // copy_movement_from — flat overwrite, no per-field presence checks.
+ InterpretedState.ForwardCommand = ims.ForwardCommand;
+ InterpretedState.ForwardSpeed = ims.ForwardSpeed;
+ InterpretedState.SideStepCommand = ims.SideStepCommand;
+ InterpretedState.SideStepSpeed = ims.SideStepSpeed;
+ InterpretedState.TurnCommand = ims.TurnCommand;
+ InterpretedState.TurnSpeed = ims.TurnSpeed;
+
+ ApplyInterpretedMovement(ims.CurrentStyle, sink);
+
+ if (ims.Actions is { } actions)
+ {
+ foreach (var a in actions)
+ {
+ // 15-bit wraparound "newer" gate vs server_action_stamp:
+ // abs diff > 0x3fff flips the comparison (305955-305969).
+ int incoming = a.Stamp & 0x7FFF;
+ int stored = ServerActionStamp & 0x7FFF;
+ int diff = incoming >= stored ? incoming - stored : stored - incoming;
+ bool newer = diff <= 0x3FFF ? stored < incoming : incoming < stored;
+ if (!newer) continue;
+
+ // Local player skips its own autonomous echoes (305977).
+ if (IsLocalPlayer && a.Autonomous) continue;
+
+ ServerActionStamp = incoming;
+ DispatchInterpretedMotion(a.Command, a.Speed, sink);
+ }
+ }
+
+ return 1;
+ }
+
+ ///
+ /// CMotionInterp::apply_interpreted_movement (0x00528600,
+ /// pseudo-C 305713): cache my_run_rate from a RunForward speed,
+ /// then dispatch style / forward-or-Falling / sidestep-or-stop /
+ /// turn-or-stop in retail order. A non-zero turn EARLY-RETURNS (no
+ /// turn-stop, no idle bookkeeping).
+ ///
+ public void ApplyInterpretedMovement(uint currentStyle, IInterpretedMotionSink? sink)
+ {
+ if (PhysicsObj is null) return;
+
+ if (InterpretedState.ForwardCommand == MotionCommand.RunForward)
+ MyRunRate = InterpretedState.ForwardSpeed;
+
+ DispatchInterpretedMotion(currentStyle, 1.0f, sink);
+
+ if (!contact_allows_move(InterpretedState.ForwardCommand))
+ {
+ DispatchInterpretedMotion(MotionCommand.Falling, 1.0f, sink);
+ }
+ else if (StandingLongJump)
+ {
+ DispatchInterpretedMotion(MotionCommand.Ready, 1.0f, sink);
+ sink?.StopMotion(MotionCommand.SideStepRight);
+ }
+ else
+ {
+ DispatchInterpretedMotion(
+ InterpretedState.ForwardCommand, InterpretedState.ForwardSpeed, sink);
+ if (InterpretedState.SideStepCommand == 0)
+ sink?.StopMotion(MotionCommand.SideStepRight);
+ else
+ DispatchInterpretedMotion(
+ InterpretedState.SideStepCommand, InterpretedState.SideStepSpeed, sink);
+ }
+
+ if (InterpretedState.TurnCommand != 0)
+ {
+ DispatchInterpretedMotion(
+ InterpretedState.TurnCommand, InterpretedState.TurnSpeed, sink);
+ return; // retail early return — no idle-stop this call
+ }
+ sink?.StopMotion(MotionCommand.TurnRight);
+ // Idle add_to_queue(Ready) bookkeeping lands with S3
+ // (pending_motions / MotionDone).
+ }
+
+ ///
+ /// CMotionInterp::DoInterpretedMotion (0x00528360, pseudo-C
+ /// 305575), sink-dispatch form: motions that pass
+ /// contact_allows_move reach the GetObjectSequence backend
+ /// (); blocked
+ /// non-action motions take the apply-only path (state already copied,
+ /// NO cycle change — this is retail's real mechanism behind "airborne
+ /// remotes keep their Falling cycle"). Blocked action-class motions
+ /// (0x10000000 bit) are rejected outright (0x24).
+ ///
+ public WeenieError DispatchInterpretedMotion(uint motion, float speed, IInterpretedMotionSink? sink)
+ {
+ if (PhysicsObj is null) return WeenieError.NoPhysicsObject;
+
+ if (contact_allows_move(motion))
+ {
+ // 0x40000011 (Dead) flushes queued link animations in retail
+ // (RemoveLinkAnimations) — S4 wires the sequencer hook.
+ sink?.ApplyMotion(motion, speed);
+ // add_to_queue(context, motion, jumpAllowed) — S3 bookkeeping.
+ return WeenieError.None;
+ }
+
+ if ((motion & 0x10000000u) == 0)
+ return WeenieError.None; // apply-only: state kept, no cycle change
+
+ return WeenieError.GeneralMovementFailure; // retail 0x24
+ }
}
diff --git a/tests/AcDream.Core.Tests/Fixtures/l2g-observer-trace.log b/tests/AcDream.Core.Tests/Fixtures/l2g-observer-trace.log
new file mode 100644
index 00000000..2a69c1fa
--- /dev/null
+++ b/tests/AcDream.Core.Tests/Fixtures/l2g-observer-trace.log
@@ -0,0 +1,2953 @@
+Opened log file 'C:\Users\erikn\source\repos\acdream\.claude\worktrees\vigorous-joliot-f0c3ad\l2g-observer-trace.log'
+0:018> .sympath C:\Users\erikn\source\repos\acdream\refs
+Symbol search path is: C:\Users\erikn\source\repos\acdream\refs
+Expanded Symbol search path is: c:\users\erikn\source\repos\acdream\refs
+
+************* Path validation summary **************
+Response Time (ms) Location
+OK C:\Users\erikn\source\repos\acdream\refs
+0:018> .symopt+ 0x40
+Symbol options are 0xB0367:
+ 0x00000001 - SYMOPT_CASE_INSENSITIVE
+ 0x00000002 - SYMOPT_UNDNAME
+ 0x00000004 - SYMOPT_DEFERRED_LOADS
+ 0x00000020 - SYMOPT_OMAP_FIND_NEAREST
+ 0x00000040 - SYMOPT_LOAD_ANYTHING
+ 0x00000100 - SYMOPT_NO_UNQUALIFIED_LOADS
+ 0x00000200 - SYMOPT_FAIL_CRITICAL_ERRORS
+ 0x00010000 - SYMOPT_AUTO_PUBLICS
+ 0x00020000 - SYMOPT_NO_IMAGE_SEARCH
+ 0x00080000 - SYMOPT_NO_PROMPTS
+0:018> .reload /f acclient.exe
+0:018>
+0:018> x acclient!CPhysics::SetObjectMovement
+00509790 acclient!CPhysics::SetObjectMovement (class CPhysicsObj *, void *, unsigned int)
+00509690 acclient!CPhysics::SetObjectMovement (class CPhysicsObj *, void *, unsigned int, unsigned short, unsigned short, int)
+0:018> x acclient!MovementManager::unpack_movement
+00524440 acclient!MovementManager::unpack_movement (void **, unsigned int)
+0:018> x acclient!CMotionInterp::move_to_interpreted_state
+005289c0 acclient!CMotionInterp::move_to_interpreted_state (class InterpretedMotionState *)
+0:018> x acclient!CMotionInterp::DoInterpretedMotion
+00528360 acclient!CMotionInterp::DoInterpretedMotion (unsigned long, class MovementParameters *)
+0:018>
+00528360 acclient!CMotionInterp::DoInterpretedMotion (unsigned long, class MovementParameters *)
+0:018> r $t0 = 0
+0:018> bp acclient!CPhysics::SetObjectMovement "r $t0 = @$t0 + 1; .printf \"\\n[SOM %d] obj=%p movSeq=%x scSeq=%x auto=%x id: \", @$t0, poi(@esp+4), poi(@esp+10)&0xffff, poi(@esp+14)&0xffff, poi(@esp+18); dt acclient!CPhysicsObj poi(@esp+4) id; .if (@$t0 >= 250) { .detach } .else { gc }"
+Matched: 00509790 acclient!CPhysics::SetObjectMovement (class CPhysicsObj *, void *, unsigned int)
+Matched: 00509690 acclient!CPhysics::SetObjectMovement (class CPhysicsObj *, void *, unsigned int, unsigned short, unsigned short, int)
+Ambiguous symbol error at 'acclient!CPhysics::SetObjectMovement "r $t0 = @$t0 + 1; .printf \"\\n[SOM %d] obj=%p movSeq=%x scSeq=%x auto=%x id: \", @$t0, poi(@esp+4), poi(@esp+10)&0xffff, poi(@esp+14)&0xffff, poi(@esp+18); dt acclient!CPhysicsObj poi(@esp+4) id; .if (@$t0 >= 250) { .detach } .else { gc }"'
+0:018> bp acclient!MovementManager::unpack_movement ".printf \"[UNPACK] mm=%p\\n\", @ecx; gc"
+0:018> bp acclient!CMotionInterp::move_to_interpreted_state ".printf \"[MTIS] minterp=%p ims:\\n\", @ecx; dt acclient!InterpretedMotionState poi(@esp+4); gc"
+0:018> bp acclient!CMotionInterp::apply_interpreted_movement ".printf \"[AIM] minterp=%p\\n\", @ecx; gc"
+0:018> bp acclient!CMotionInterp::apply_raw_movement ".printf \"[ARM] minterp=%p\\n\", @ecx; gc"
+0:018> bp acclient!CMotionInterp::DoInterpretedMotion ".printf \"[DIM] minterp=%p motion=%08x\\n\", @ecx, poi(@esp+4); gc"
+0:018> g
+[UNPACK] mm=2a222e50
+[MTIS] minterp=29ec3b28 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x10000054
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec3b28
+[DIM] minterp=29ec3b28 motion=8000003d
+[DIM] minterp=29ec3b28 motion=10000054
+[UNPACK] mm=2a222e50
+[MTIS] minterp=29ec3b28 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec3b28
+[DIM] minterp=29ec3b28 motion=8000003d
+[DIM] minterp=29ec3b28 motion=41000003
+[UNPACK] mm=2a222e50
+[MTIS] minterp=29ec3b28 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x10000052
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec3b28
+[DIM] minterp=29ec3b28 motion=8000003d
+[DIM] minterp=29ec3b28 motion=10000052
+[UNPACK] mm=2a222e50
+[MTIS] minterp=29ec3b28 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec3b28
+[DIM] minterp=29ec3b28 motion=8000003d
+[DIM] minterp=29ec3b28 motion=41000003
+[DIM] minterp=14fc2e00 motion=41000003
+[DIM] minterp=14fc2e00 motion=6500000d
+[UNPACK] mm=2a167f90
+[MTIS] minterp=29ebfd48 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x10000052
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ebfd48
+[DIM] minterp=29ebfd48 motion=8000003d
+[DIM] minterp=29ebfd48 motion=10000052
+[UNPACK] mm=2a167f90
+[MTIS] minterp=29ebfd48 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ebfd48
+[DIM] minterp=29ebfd48 motion=8000003d
+[DIM] minterp=29ebfd48 motion=41000003
+[DIM] minterp=14fc2e00 motion=41000003
+[DIM] minterp=14fc2e00 motion=41000003
+[UNPACK] mm=2a222e50
+[MTIS] minterp=29ec3b28 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x10000052
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec3b28
+[DIM] minterp=29ec3b28 motion=8000003d
+[DIM] minterp=29ec3b28 motion=10000052
+[UNPACK] mm=2a222e50
+[MTIS] minterp=29ec3b28 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec3b28
+[DIM] minterp=29ec3b28 motion=8000003d
+[DIM] minterp=29ec3b28 motion=41000003
+[UNPACK] mm=2a222e50
+[MTIS] minterp=29ec3b28 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x10000053
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec3b28
+[DIM] minterp=29ec3b28 motion=8000003d
+[DIM] minterp=29ec3b28 motion=10000053
+[UNPACK] mm=2a222e50
+[MTIS] minterp=29ec3b28 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec3b28
+[DIM] minterp=29ec3b28 motion=8000003d
+[DIM] minterp=29ec3b28 motion=41000003
+[UNPACK] mm=2a222e50
+[MTIS] minterp=29ec3b28 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x10000052
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec3b28
+[DIM] minterp=29ec3b28 motion=8000003d
+[DIM] minterp=29ec3b28 motion=10000052
+[UNPACK] mm=2a222e50
+[MTIS] minterp=29ec3b28 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec3b28
+[DIM] minterp=29ec3b28 motion=8000003d
+[DIM] minterp=29ec3b28 motion=41000003
+[UNPACK] mm=2a222e50
+[MTIS] minterp=29ec3b28 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x10000053
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec3b28
+[DIM] minterp=29ec3b28 motion=8000003d
+[DIM] minterp=29ec3b28 motion=10000053
+[UNPACK] mm=2a222e50
+[MTIS] minterp=29ec3b28 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec3b28
+[DIM] minterp=29ec3b28 motion=8000003d
+[DIM] minterp=29ec3b28 motion=41000003
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=40000015
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=40000015
+[UNPACK] mm=196e1718
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=40000015
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[DIM] minterp=14fc2e00 motion=6500000d
+[UNPACK] mm=2a222e50
+[MTIS] minterp=29ec3b28 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x10000053
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec3b28
+[DIM] minterp=29ec3b28 motion=8000003d
+[DIM] minterp=29ec3b28 motion=10000053
+[DIM] minterp=14fc2e00 motion=6500000d
+[DIM] minterp=14fc2e00 motion=6500000d
+[DIM] minterp=14fc2e00 motion=6500000d
+[DIM] minterp=14fc2e00 motion=6500000d
+[UNPACK] mm=2a222e50
+[MTIS] minterp=29ec3b28 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec3b28
+[DIM] minterp=29ec3b28 motion=8000003d
+[DIM] minterp=29ec3b28 motion=41000003
+[DIM] minterp=14fc2e00 motion=41000003
+[DIM] minterp=14fc2e00 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : 1.5
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[DIM] minterp=18e8b0f8 motion=6500000d
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[DIM] minterp=14fc2e00 motion=6500000d
+[DIM] minterp=14fc2e00 motion=6500000d
+[DIM] minterp=14fc2e00 motion=6500000d
+[DIM] minterp=14fc2e00 motion=6500000d
+[DIM] minterp=14fc2e00 motion=6500000d
+[DIM] minterp=14fc2e00 motion=6500000d
+[DIM] minterp=14fc2e00 motion=6500000d
+[DIM] minterp=14fc2e00 motion=41000003
+[DIM] minterp=14fc2e00 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x45000005
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=45000005
+[UNPACK] mm=2a222e50
+[MTIS] minterp=29ec3b28 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x10000053
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec3b28
+[DIM] minterp=29ec3b28 motion=8000003d
+[DIM] minterp=29ec3b28 motion=10000053
+[UNPACK] mm=2a222e50
+[MTIS] minterp=29ec3b28 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec3b28
+[DIM] minterp=29ec3b28 motion=8000003d
+[DIM] minterp=29ec3b28 motion=41000003
+[UNPACK] mm=2a222e50
+[MTIS] minterp=29ec3b28 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x10000053
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec3b28
+[DIM] minterp=29ec3b28 motion=8000003d
+[DIM] minterp=29ec3b28 motion=10000053
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : 1.5
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[DIM] minterp=18e8b0f8 motion=6500000d
+[UNPACK] mm=2a222e50
+[MTIS] minterp=29ec3b28 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec3b28
+[DIM] minterp=29ec3b28 motion=8000003d
+[DIM] minterp=29ec3b28 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : -1.5
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[DIM] minterp=18e8b0f8 motion=6500000d
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : -1.5
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[DIM] minterp=18e8b0f8 motion=6500000d
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : -1.5
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[DIM] minterp=18e8b0f8 motion=6500000d
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : -1.5
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[DIM] minterp=18e8b0f8 motion=6500000d
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x44000007
+ +0x00c forward_speed : 2.85277319
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=44000007
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x44000007
+ +0x00c forward_speed : 2.85277319
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : 1.5
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=44000007
+[DIM] minterp=18e8b0f8 motion=6500000d
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x44000007
+ +0x00c forward_speed : 2.85277319
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=44000007
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x45000005
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : -1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=45000005
+[DIM] minterp=18e8b0f8 motion=6500000d
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x45000005
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=45000005
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x45000005
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=45000005
+[DIM] minterp=18e8b0f8 motion=6500000d
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x45000005
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=45000005
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[UNPACK] mm=2a222e50
+[MTIS] minterp=29ec3b28 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x10000052
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec3b28
+[DIM] minterp=29ec3b28 motion=8000003d
+[DIM] minterp=29ec3b28 motion=10000052
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x44000007
+ +0x00c forward_speed : 2.85277319
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=44000007
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : -1.5
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[DIM] minterp=18e8b0f8 motion=6500000d
+[UNPACK] mm=2a222e50
+[MTIS] minterp=29ec3b28 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec3b28
+[DIM] minterp=29ec3b28 motion=8000003d
+[DIM] minterp=29ec3b28 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : -1.5
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[DIM] minterp=18e8b0f8 motion=6500000d
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x44000007
+ +0x00c forward_speed : 2.85277319
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=44000007
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : 1.5
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[DIM] minterp=18e8b0f8 motion=6500000d
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : 1.5
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[DIM] minterp=18e8b0f8 motion=6500000d
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x44000007
+ +0x00c forward_speed : 2.85277319
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=44000007
+[UNPACK] mm=2a222e50
+[MTIS] minterp=29ec3b28 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x10000054
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec3b28
+[DIM] minterp=29ec3b28 motion=8000003d
+[DIM] minterp=29ec3b28 motion=10000054
+[UNPACK] mm=2a222e50
+[MTIS] minterp=29ec3b28 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec3b28
+[DIM] minterp=29ec3b28 motion=8000003d
+[DIM] minterp=29ec3b28 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : -1.5
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[DIM] minterp=18e8b0f8 motion=6500000d
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : -1.5
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[DIM] minterp=18e8b0f8 motion=6500000d
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x44000007
+ +0x00c forward_speed : 2.85277319
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=44000007
+[UNPACK] mm=2a222e50
+[MTIS] minterp=29ec3b28 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x10000052
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec3b28
+[DIM] minterp=29ec3b28 motion=8000003d
+[DIM] minterp=29ec3b28 motion=10000052
+[UNPACK] mm=2a222e50
+[MTIS] minterp=29ec3b28 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec3b28
+[DIM] minterp=29ec3b28 motion=8000003d
+[DIM] minterp=29ec3b28 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x45000005
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : -1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=45000005
+[DIM] minterp=18e8b0f8 motion=6500000d
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x45000005
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=45000005
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : 1.5
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[DIM] minterp=18e8b0f8 motion=6500000d
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x44000007
+ +0x00c forward_speed : 2.85277319
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=44000007
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : -1.5
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[DIM] minterp=18e8b0f8 motion=6500000d
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x45000005
+ +0x00c forward_speed : -1.854302526
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=45000005
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0x6500000f
+ +0x014 sidestep_speed : -3
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[DIM] minterp=18e8b0f8 motion=6500000f
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0x6500000f
+ +0x014 sidestep_speed : 3
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[DIM] minterp=18e8b0f8 motion=6500000f
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x45000005
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=45000005
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x45000005
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=45000005
+[DIM] minterp=18e8b0f8 motion=6500000d
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x45000005
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=45000005
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[UNPACK] mm=2a167f90
+[MTIS] minterp=29ebfd48 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x10000053
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ebfd48
+[DIM] minterp=29ebfd48 motion=8000003d
+[DIM] minterp=29ebfd48 motion=10000053
+[UNPACK] mm=2a167f90
+[MTIS] minterp=29ebfd48 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ebfd48
+[DIM] minterp=29ebfd48 motion=8000003d
+[DIM] minterp=29ebfd48 motion=41000003
+[UNPACK] mm=2a167f90
+[MTIS] minterp=29ebfd48 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x10000053
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ebfd48
+[DIM] minterp=29ebfd48 motion=8000003d
+[DIM] minterp=29ebfd48 motion=10000053
+[UNPACK] mm=2a167f90
+[MTIS] minterp=29ebfd48 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ebfd48
+[DIM] minterp=29ebfd48 motion=8000003d
+[DIM] minterp=29ebfd48 motion=41000003
+[UNPACK] mm=2a222e50
+[MTIS] minterp=29ec3b28 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x10000054
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec3b28
+[DIM] minterp=29ec3b28 motion=8000003d
+[DIM] minterp=29ec3b28 motion=10000054
+[UNPACK] mm=2a222e50
+[MTIS] minterp=29ec3b28 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec3b28
+[DIM] minterp=29ec3b28 motion=8000003d
+[DIM] minterp=29ec3b28 motion=41000003
+[UNPACK] mm=2a167f90
+[MTIS] minterp=29ebfd48 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x10000052
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ebfd48
+[DIM] minterp=29ebfd48 motion=8000003d
+[DIM] minterp=29ebfd48 motion=10000052
+[UNPACK] mm=2a167f90
+[MTIS] minterp=29ebfd48 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ebfd48
+[DIM] minterp=29ebfd48 motion=8000003d
+[DIM] minterp=29ebfd48 motion=41000003
+[UNPACK] mm=2a167f90
+[MTIS] minterp=29ebfd48 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x10000053
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ebfd48
+[DIM] minterp=29ebfd48 motion=8000003d
+[DIM] minterp=29ebfd48 motion=10000053
+[UNPACK] mm=2a167f90
+[MTIS] minterp=29ebfd48 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ebfd48
+[DIM] minterp=29ebfd48 motion=8000003d
+[DIM] minterp=29ebfd48 motion=41000003
+[UNPACK] mm=2a167f90
+[MTIS] minterp=29ebfd48 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x10000052
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ebfd48
+[DIM] minterp=29ebfd48 motion=8000003d
+[DIM] minterp=29ebfd48 motion=10000052
+[UNPACK] mm=2a167f90
+[MTIS] minterp=29ebfd48 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ebfd48
+[DIM] minterp=29ebfd48 motion=8000003d
+[DIM] minterp=29ebfd48 motion=41000003
+[UNPACK] mm=2a167f90
+[MTIS] minterp=29ebfd48 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x10000053
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ebfd48
+[DIM] minterp=29ebfd48 motion=8000003d
+[DIM] minterp=29ebfd48 motion=10000053
+[UNPACK] mm=2a222e50
+[MTIS] minterp=29ec3b28 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x10000054
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec3b28
+[DIM] minterp=29ec3b28 motion=8000003d
+[DIM] minterp=29ec3b28 motion=10000054
+[UNPACK] mm=2a167f90
+[MTIS] minterp=29ebfd48 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ebfd48
+[DIM] minterp=29ebfd48 motion=8000003d
+[DIM] minterp=29ebfd48 motion=41000003
+[UNPACK] mm=2a222e50
+[MTIS] minterp=29ec3b28 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec3b28
+[DIM] minterp=29ec3b28 motion=8000003d
+[DIM] minterp=29ec3b28 motion=41000003
+[UNPACK] mm=2a222e50
+[MTIS] minterp=29ec3b28 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x10000053
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec3b28
+[DIM] minterp=29ec3b28 motion=8000003d
+[DIM] minterp=29ec3b28 motion=10000053
+[UNPACK] mm=2a167f90
+[MTIS] minterp=29ebfd48 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x10000053
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ebfd48
+[DIM] minterp=29ebfd48 motion=8000003d
+[DIM] minterp=29ebfd48 motion=10000053
+[UNPACK] mm=2a222e50
+[MTIS] minterp=29ec3b28 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec3b28
+[DIM] minterp=29ec3b28 motion=8000003d
+[DIM] minterp=29ec3b28 motion=41000003
+[UNPACK] mm=2a167f90
+[MTIS] minterp=29ebfd48 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ebfd48
+[DIM] minterp=29ebfd48 motion=8000003d
+[DIM] minterp=29ebfd48 motion=41000003
+[UNPACK] mm=2a167f90
+[MTIS] minterp=29ebfd48 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x10000052
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ebfd48
+[DIM] minterp=29ebfd48 motion=8000003d
+[DIM] minterp=29ebfd48 motion=10000052
+[UNPACK] mm=2a167f90
+[MTIS] minterp=29ebfd48 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ebfd48
+[DIM] minterp=29ebfd48 motion=8000003d
+[DIM] minterp=29ebfd48 motion=41000003
+[UNPACK] mm=2a222e50
+[MTIS] minterp=29ec3b28 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x10000054
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec3b28
+[DIM] minterp=29ec3b28 motion=8000003d
+[DIM] minterp=29ec3b28 motion=10000054
+[UNPACK] mm=2a167f90
+[MTIS] minterp=29ebfd48 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x10000052
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ebfd48
+[DIM] minterp=29ebfd48 motion=8000003d
+[DIM] minterp=29ebfd48 motion=10000052
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : -1.5
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[DIM] minterp=18e8b0f8 motion=6500000d
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[UNPACK] mm=2a167f90
+[MTIS] minterp=29ebfd48 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ebfd48
+[DIM] minterp=29ebfd48 motion=8000003d
+[DIM] minterp=29ebfd48 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : -1.5
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[DIM] minterp=18e8b0f8 motion=6500000d
+[UNPACK] mm=2a222e50
+[MTIS] minterp=29ec3b28 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec3b28
+[DIM] minterp=29ec3b28 motion=8000003d
+[DIM] minterp=29ec3b28 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : 1.5
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[DIM] minterp=18e8b0f8 motion=6500000d
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[UNPACK] mm=2a225778
+[DIM] minterp=29ec56b8 motion=80000000
+[MTIS] minterp=29ec56b8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec56b8
+[DIM] minterp=29ec56b8 motion=8000003d
+[DIM] minterp=29ec56b8 motion=41000003
+[DIM] minterp=29ec56b8 motion=6500000d
+[UNPACK] mm=2a225778
+[DIM] minterp=29ec56b8 motion=80000000
+[MTIS] minterp=29ec56b8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec56b8
+[DIM] minterp=29ec56b8 motion=8000003d
+[DIM] minterp=29ec56b8 motion=41000003
+[DIM] minterp=14fc2e00 motion=6500000d
+[DIM] minterp=14fc2e00 motion=6500000d
+[DIM] minterp=14fc2e00 motion=6500000d
+[DIM] minterp=14fc2e00 motion=6500000d
+[DIM] minterp=14fc2e00 motion=6500000d
+[DIM] minterp=14fc2e00 motion=6500000d
+[DIM] minterp=14fc2e00 motion=41000003
+[DIM] minterp=14fc2e00 motion=41000003
+[UNPACK] mm=2a225778
+[DIM] minterp=29ec56b8 motion=80000000
+[MTIS] minterp=29ec56b8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec56b8
+[DIM] minterp=29ec56b8 motion=8000003d
+[DIM] minterp=29ec56b8 motion=41000003
+[DIM] minterp=29ec56b8 motion=6500000d
+[UNPACK] mm=2a225778
+[DIM] minterp=29ec56b8 motion=80000000
+[MTIS] minterp=29ec56b8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec56b8
+[DIM] minterp=29ec56b8 motion=8000003d
+[DIM] minterp=29ec56b8 motion=41000003
+[UNPACK] mm=2a225778
+[DIM] minterp=29ec56b8 motion=80000000
+[MTIS] minterp=29ec56b8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x45000005
+ +0x00c forward_speed : -2.924999952
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec56b8
+[DIM] minterp=29ec56b8 motion=8000003d
+[DIM] minterp=29ec56b8 motion=45000005
+[UNPACK] mm=2a225778
+[DIM] minterp=29ec56b8 motion=80000000
+[MTIS] minterp=29ec56b8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec56b8
+[DIM] minterp=29ec56b8 motion=8000003d
+[DIM] minterp=29ec56b8 motion=41000003
+[UNPACK] mm=2a225778
+[DIM] minterp=29ec56b8 motion=80000000
+[MTIS] minterp=29ec56b8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x44000007
+ +0x00c forward_speed : 4.5
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec56b8
+[DIM] minterp=29ec56b8 motion=8000003d
+[DIM] minterp=29ec56b8 motion=44000007
+[UNPACK] mm=2a225778
+[DIM] minterp=29ec56b8 motion=80000000
+[MTIS] minterp=29ec56b8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x45000005
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec56b8
+[DIM] minterp=29ec56b8 motion=8000003d
+[DIM] minterp=29ec56b8 motion=45000005
+[UNPACK] mm=2a225778
+[DIM] minterp=29ec56b8 motion=80000000
+[MTIS] minterp=29ec56b8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x44000007
+ +0x00c forward_speed : 4.5
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec56b8
+[DIM] minterp=29ec56b8 motion=8000003d
+[DIM] minterp=29ec56b8 motion=44000007
+[UNPACK] mm=2a225778
+[DIM] minterp=29ec56b8 motion=80000000
+[MTIS] minterp=29ec56b8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec56b8
+[DIM] minterp=29ec56b8 motion=8000003d
+[DIM] minterp=29ec56b8 motion=41000003
+[UNPACK] mm=2a225778
+[DIM] minterp=29ec56b8 motion=80000000
+[MTIS] minterp=29ec56b8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : -1
+ +0x020 actions : LList
+[AIM] minterp=29ec56b8
+[DIM] minterp=29ec56b8 motion=8000003d
+[DIM] minterp=29ec56b8 motion=41000003
+[DIM] minterp=29ec56b8 motion=6500000d
+[UNPACK] mm=2a225778
+[DIM] minterp=29ec56b8 motion=80000000
+[MTIS] minterp=29ec56b8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec56b8
+[DIM] minterp=29ec56b8 motion=8000003d
+[DIM] minterp=29ec56b8 motion=41000003
+[UNPACK] mm=2a225778
+[DIM] minterp=29ec56b8 motion=80000000
+[MTIS] minterp=29ec56b8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : -1
+ +0x020 actions : LList
+[AIM] minterp=29ec56b8
+[DIM] minterp=29ec56b8 motion=8000003d
+[DIM] minterp=29ec56b8 motion=41000003
+[DIM] minterp=29ec56b8 motion=6500000d
+[UNPACK] mm=2a225778
+[DIM] minterp=29ec56b8 motion=80000000
+[MTIS] minterp=29ec56b8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec56b8
+[DIM] minterp=29ec56b8 motion=8000003d
+[DIM] minterp=29ec56b8 motion=41000003
+[UNPACK] mm=2a225778
+[DIM] minterp=29ec56b8 motion=80000000
+[MTIS] minterp=29ec56b8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x44000007
+ +0x00c forward_speed : 4.5
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec56b8
+[DIM] minterp=29ec56b8 motion=8000003d
+[DIM] minterp=29ec56b8 motion=44000007
+[UNPACK] mm=2a225778
+[DIM] minterp=29ec56b8 motion=80000000
+[MTIS] minterp=29ec56b8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x45000005
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec56b8
+[DIM] minterp=29ec56b8 motion=8000003d
+[DIM] minterp=29ec56b8 motion=45000005
+[UNPACK] mm=2a225778
+[DIM] minterp=29ec56b8 motion=80000000
+[MTIS] minterp=29ec56b8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x44000007
+ +0x00c forward_speed : 4.5
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec56b8
+[DIM] minterp=29ec56b8 motion=8000003d
+[DIM] minterp=29ec56b8 motion=44000007
+[UNPACK] mm=2a225778
+[DIM] minterp=29ec56b8 motion=80000000
+[MTIS] minterp=29ec56b8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x44000007
+ +0x00c forward_speed : 4.5
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : 1.5
+ +0x020 actions : LList
+[AIM] minterp=29ec56b8
+[DIM] minterp=29ec56b8 motion=8000003d
+[DIM] minterp=29ec56b8 motion=44000007
+[DIM] minterp=29ec56b8 motion=6500000d
+[UNPACK] mm=2a225778
+[DIM] minterp=29ec56b8 motion=80000000
+[MTIS] minterp=29ec56b8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec56b8
+[DIM] minterp=29ec56b8 motion=8000003d
+[DIM] minterp=29ec56b8 motion=41000003
+[DIM] minterp=29ec56b8 motion=6500000d
+[UNPACK] mm=2a225778
+[DIM] minterp=29ec56b8 motion=80000000
+[MTIS] minterp=29ec56b8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x44000007
+ +0x00c forward_speed : 4.5
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : 1.5
+ +0x020 actions : LList
+[AIM] minterp=29ec56b8
+[DIM] minterp=29ec56b8 motion=8000003d
+[DIM] minterp=29ec56b8 motion=44000007
+[DIM] minterp=29ec56b8 motion=6500000d
+[UNPACK] mm=2a167f90
+[MTIS] minterp=29ebfd48 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x10000052
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ebfd48
+[DIM] minterp=29ebfd48 motion=8000003d
+[DIM] minterp=29ebfd48 motion=10000052
+[UNPACK] mm=2a225778
+[DIM] minterp=29ec56b8 motion=80000000
+[MTIS] minterp=29ec56b8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec56b8
+[DIM] minterp=29ec56b8 motion=8000003d
+[DIM] minterp=29ec56b8 motion=41000003
+[DIM] minterp=29ec56b8 motion=6500000d
+[UNPACK] mm=2a225778
+[DIM] minterp=29ec56b8 motion=80000000
+[MTIS] minterp=29ec56b8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec56b8
+[DIM] minterp=29ec56b8 motion=8000003d
+[DIM] minterp=29ec56b8 motion=41000003
+[UNPACK] mm=2a167f90
+[MTIS] minterp=29ebfd48 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ebfd48
+[DIM] minterp=29ebfd48 motion=8000003d
+[DIM] minterp=29ebfd48 motion=41000003
+[UNPACK] mm=2a225778
+[DIM] minterp=29ec56b8 motion=80000000
+[MTIS] minterp=29ec56b8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : -1
+ +0x020 actions : LList
+[AIM] minterp=29ec56b8
+[DIM] minterp=29ec56b8 motion=8000003d
+[DIM] minterp=29ec56b8 motion=41000003
+[DIM] minterp=29ec56b8 motion=6500000d
+[UNPACK] mm=2a225778
+[DIM] minterp=29ec56b8 motion=80000000
+[MTIS] minterp=29ec56b8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x44000007
+ +0x00c forward_speed : 4.5
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : -1.5
+ +0x020 actions : LList
+[AIM] minterp=29ec56b8
+[DIM] minterp=29ec56b8 motion=8000003d
+[DIM] minterp=29ec56b8 motion=44000007
+[DIM] minterp=29ec56b8 motion=6500000d
+[UNPACK] mm=2a225778
+[DIM] minterp=29ec56b8 motion=80000000
+[MTIS] minterp=29ec56b8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec56b8
+[DIM] minterp=29ec56b8 motion=8000003d
+[DIM] minterp=29ec56b8 motion=41000003
+[DIM] minterp=14fc2e00 motion=41000003
+[DIM] minterp=14fc2e00 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : 1.5
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[DIM] minterp=18e8b0f8 motion=6500000d
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x44000007
+ +0x00c forward_speed : 2.85277319
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : 1.5
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=44000007
+[DIM] minterp=18e8b0f8 motion=6500000d
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x44000007
+ +0x00c forward_speed : 2.85277319
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=44000007
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x44000007
+ +0x00c forward_speed : 2.85277319
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : -1.5
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=44000007
+[DIM] minterp=18e8b0f8 motion=6500000d
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x44000007
+ +0x00c forward_speed : 2.85277319
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=44000007
+[UNPACK] mm=2a222e50
+[MTIS] minterp=29ec3b28 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x10000053
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec3b28
+[DIM] minterp=29ec3b28 motion=8000003d
+[DIM] minterp=29ec3b28 motion=10000053
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x44000007
+ +0x00c forward_speed : 2.85277319
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : 1.5
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=44000007
+[DIM] minterp=18e8b0f8 motion=6500000d
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x44000007
+ +0x00c forward_speed : 2.85277319
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=44000007
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x44000007
+ +0x00c forward_speed : 2.85277319
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : 1.5
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=44000007
+[DIM] minterp=18e8b0f8 motion=6500000d
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : 1.5
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[DIM] minterp=18e8b0f8 motion=6500000d
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x44000007
+ +0x00c forward_speed : 2.85277319
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=44000007
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x44000007
+ +0x00c forward_speed : 2.85277319
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : -1.5
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=44000007
+[DIM] minterp=18e8b0f8 motion=6500000d
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x44000007
+ +0x00c forward_speed : 2.85277319
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=44000007
+[UNPACK] mm=2a222e50
+[MTIS] minterp=29ec3b28 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec3b28
+[DIM] minterp=29ec3b28 motion=8000003d
+[DIM] minterp=29ec3b28 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x45000005
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : -1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=45000005
+[DIM] minterp=18e8b0f8 motion=6500000d
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x45000005
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=45000005
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x44000007
+ +0x00c forward_speed : 2.85277319
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : 1.5
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=44000007
+[DIM] minterp=18e8b0f8 motion=6500000d
+[UNPACK] mm=2a222e50
+[MTIS] minterp=29ec3b28 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x10000052
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec3b28
+[DIM] minterp=29ec3b28 motion=8000003d
+[DIM] minterp=29ec3b28 motion=10000052
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0x6500000d
+ +0x01c turn_speed : 1.5
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[DIM] minterp=18e8b0f8 motion=6500000d
+[UNPACK] mm=2a222e50
+[MTIS] minterp=29ec3b28 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec3b28
+[DIM] minterp=29ec3b28 motion=8000003d
+[DIM] minterp=29ec3b28 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x44000007
+ +0x00c forward_speed : 2.85277319
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=44000007
+[UNPACK] mm=2a167f90
+[MTIS] minterp=29ebfd48 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x10000053
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ebfd48
+[DIM] minterp=29ebfd48 motion=8000003d
+[DIM] minterp=29ebfd48 motion=10000053
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[UNPACK] mm=2a167f90
+[MTIS] minterp=29ebfd48 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ebfd48
+[DIM] minterp=29ebfd48 motion=8000003d
+[DIM] minterp=29ebfd48 motion=41000003
+[UNPACK] mm=196e1718
+[DIM] minterp=18e8b0f8 motion=80000000
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[UNPACK] mm=196e1718
+[MTIS] minterp=18e8b0f8 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=41000003
+[DIM] minterp=18e8b0f8 motion=1000011e
+[DIM] minterp=14fc2e00 motion=41000003
+[DIM] minterp=14fc2e00 motion=41000003
+[DIM] minterp=14fc2e00 motion=41000003
+[UNPACK] mm=2a222e50
+[MTIS] minterp=29ec3b28 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x10000052
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec3b28
+[DIM] minterp=29ec3b28 motion=8000003d
+[DIM] minterp=29ec3b28 motion=10000052
+[UNPACK] mm=2a222e50
+[MTIS] minterp=29ec3b28 ims:
+ +0x000 __VFN_table : 0x007c7a60
+ +0x004 current_style : 0x8000003d
+ +0x008 forward_command : 0x41000003
+ +0x00c forward_speed : 1
+ +0x010 sidestep_command : 0
+ +0x014 sidestep_speed : 1
+ +0x018 turn_command : 0
+ +0x01c turn_speed : 1
+ +0x020 actions : LList
+[AIM] minterp=29ec3b28
+[DIM] minterp=29ec3b28 motion=8000003d
+[DIM] minterp=29ec3b28 motion=41000003
+[AIM] minterp=18e8b0f8
+[DIM] minterp=18e8b0f8 motion=8000003d
+[DIM] minterp=18e8b0f8 motion=40000015
+[DIM] minterp=14fc2e00 motion=41000003
+[AIM] minterp=298cf070
+[DIM] minterp=298cf070 motion=8000003d
+[DIM] minterp=298cf070 motion=40000015
+[AIM] minterp=14fc2e00
+[DIM] minterp=14fc2e00 motion=8000003d
+[DIM] minterp=14fc2e00 motion=40000015
+[AIM] minterp=1705c458
+[DIM] minterp=1705c458 motion=8000003d
+[DIM] minterp=1705c458 motion=40000015
+[AIM] minterp=29ebc6b8
+[DIM] minterp=29ebc6b8 motion=8000003d
+[DIM] minterp=29ebc6b8 motion=40000015
+[AIM] minterp=29ec56b8
+[DIM] minterp=29ec56b8 motion=8000003d
+[DIM] minterp=29ec56b8 motion=40000015
+[AIM] minterp=298cdcc0
+[DIM] minterp=298cdcc0 motion=8000003d
+[DIM] minterp=298cdcc0 motion=40000015
+[AIM] minterp=298d6330
+[DIM] minterp=298d6330 motion=8000003d
+[DIM] minterp=298d6330 motion=40000015
+[AIM] minterp=16e5c030
+[DIM] minterp=16e5c030 motion=8000003d
+[DIM] minterp=16e5c030 motion=40000015
+[AIM] minterp=298d6720
+[DIM] minterp=298d6720 motion=8000003d
+[DIM] minterp=298d6720 motion=40000015
+[AIM] minterp=17056788
+[DIM] minterp=17056788 motion=8000003d
+[DIM] minterp=17056788 motion=40000015
+[AIM] minterp=298d5eb0
+[DIM] minterp=298d5eb0 motion=8000003d
+[DIM] minterp=298d5eb0 motion=40000015
+[AIM] minterp=1788f350
+[DIM] minterp=1788f350 motion=8000003d
+[DIM] minterp=1788f350 motion=40000015
+[AIM] minterp=298d99c0
+[DIM] minterp=298d99c0 motion=8000003d
+[DIM] minterp=298d99c0 motion=40000015
+[AIM] minterp=1788f980
+[DIM] minterp=1788f980 motion=8000003d
+[DIM] minterp=1788f980 motion=40000015
+[AIM] minterp=178917e0
+[DIM] minterp=178917e0 motion=8000003d
+[DIM] minterp=178917e0 motion=40000015
+[AIM] minterp=1788ac70
+[DIM] minterp=1788ac70 motion=8000003d
+[DIM] minterp=1788ac70 motion=40000015
+[AIM] minterp=1788b330
+[DIM] minterp=1788b330 motion=8000003d
+[DIM] minterp=1788b330 motion=40000015
+[AIM] minterp=11209dc0
+[DIM] minterp=11209dc0 motion=8000003d
+[DIM] minterp=11209dc0 motion=40000015
+[AIM] minterp=16e5bc40
+[DIM] minterp=16e5bc40 motion=8000003d
+[DIM] minterp=16e5bc40 motion=40000015
+[AIM] minterp=298d0390
+[DIM] minterp=298d0390 motion=8000003d
+[DIM] minterp=298d0390 motion=40000015
+[AIM] minterp=1788c770
+[DIM] minterp=1788c770 motion=8000003d
+[DIM] minterp=1788c770 motion=40000015
+[AIM] minterp=16e550d0
+[DIM] minterp=16e550d0 motion=8000003d
+[DIM] minterp=16e550d0 motion=40000015
+[AIM] minterp=19ad15c8
+[DIM] minterp=19ad15c8 motion=8000003d
+[DIM] minterp=19ad15c8 motion=40000015
+[AIM] minterp=19ad3398
+[DIM] minterp=19ad3398 motion=8000003d
+[DIM] minterp=19ad3398 motion=40000015
+[AIM] minterp=19ac4d88
+[DIM] minterp=19ac4d88 motion=8000003d
+[DIM] minterp=19ac4d88 motion=40000015
+[AIM] minterp=17057868
+[DIM] minterp=17057868 motion=8000003d
+[DIM] minterp=17057868 motion=40000015
+[AIM] minterp=29ec3b28
+[DIM] minterp=29ec3b28 motion=8000003d
+[DIM] minterp=29ec3b28 motion=40000015
+[AIM] minterp=29ebdd38
+[DIM] minterp=29ebdd38 motion=8000003d
+[DIM] minterp=29ebdd38 motion=40000015
+[AIM] minterp=19ac81d8
+[DIM] minterp=19ac81d8 motion=8000003d
+[DIM] minterp=19ac81d8 motion=40000015
+[AIM] minterp=1788cfe0
+[DIM] minterp=1788cfe0 motion=8000003d
+[DIM] minterp=1788cfe0 motion=40000015
+[AIM] minterp=29ebfd48
+[DIM] minterp=29ebfd48 motion=8000003d
+[DIM] minterp=29ebfd48 motion=40000015
+[AIM] minterp=172f0070
+[DIM] minterp=172f0070 motion=8000003d
+[DIM] minterp=172f0070 motion=40000015
+[AIM] minterp=172f1ed0
+[DIM] minterp=172f1ed0 motion=8000003d
+[DIM] minterp=172f1ed0 motion=40000015
+[AIM] minterp=298c9dc0
+[DIM] minterp=298c9dc0 motion=8000003d
+[DIM] minterp=298c9dc0 motion=40000015
+[AIM] minterp=298cc520
+[DIM] minterp=298cc520 motion=8000003d
+[DIM] minterp=298cc520 motion=40000015
+[AIM] minterp=17056668
+[DIM] minterp=17056668 motion=8000003d
+[DIM] minterp=17056668 motion=40000015
+[AIM] minterp=17059488
+[DIM] minterp=17059488 motion=8000003d
+[DIM] minterp=17059488 motion=40000015
+[AIM] minterp=16e57710
+[DIM] minterp=16e57710 motion=8000003d
+[DIM] minterp=16e57710 motion=40000015
+[AIM] minterp=16e59210
+[DIM] minterp=16e59210 motion=8000003d
+[DIM] minterp=16e59210 motion=40000015
+[AIM] minterp=298d4170
+[DIM] minterp=298d4170 motion=8000003d
+[DIM] minterp=298d4170 motion=40000015
+[AIM] minterp=1705cc38
+[DIM] minterp=1705cc38 motion=8000003d
+[DIM] minterp=1705cc38 motion=40000015
+[AIM] minterp=298d4050
+[DIM] minterp=298d4050 motion=8000003d
+[DIM] minterp=298d4050 motion=40000015
+[AIM] minterp=298d2c10
+[DIM] minterp=298d2c10 motion=8000003d
+[DIM] minterp=298d2c10 motion=40000015
+[AIM] minterp=298d2dc0
+[DIM] minterp=298d2dc0 motion=8000003d
+[DIM] minterp=298d2dc0 motion=40000015
+eax=00000000 ebx=77e57240 ecx=00000000 edx=00000000 esi=00000000 edi=00000000
+eip=77d99d8c esp=001afdcc ebp=001afea4 iopl=0 nv up ei pl nz na pe nc
+cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00200206
+ntdll!NtTerminateProcess+0xc:
+77d99d8c c20800 ret 8
diff --git a/tests/AcDream.Core.Tests/Physics/MotionInterpreterFunnelTests.cs b/tests/AcDream.Core.Tests/Physics/MotionInterpreterFunnelTests.cs
new file mode 100644
index 00000000..93536ff3
--- /dev/null
+++ b/tests/AcDream.Core.Tests/Physics/MotionInterpreterFunnelTests.cs
@@ -0,0 +1,272 @@
+using System.Collections.Generic;
+using AcDream.Core.Physics;
+using Xunit;
+
+namespace AcDream.Core.Tests.Physics;
+
+///
+/// L.2g S2 — the inbound CMotionInterp funnel (deviation DEV-1).
+///
+/// Oracle: docs/research/2026-07-02-s2-inbound-funnel-pseudocode.md
+/// (decomp: move_to_interpreted_state 0x005289c0 @305936,
+/// apply_interpreted_movement 0x00528600 @305713) — validated against the
+/// LIVE retail-observer cdb trace (l2g-observer-trace.log), which showed the
+/// per-UM dispatch order verbatim: style → forward → sidestep(-stop) →
+/// turn(-stop).
+///
+public class MotionInterpreterFunnelTests
+{
+ private sealed class RecordingSink : IInterpretedMotionSink
+ {
+ public readonly List Calls = new();
+ public void ApplyMotion(uint motion, float speed)
+ => Calls.Add($"DIM {motion:x8}@{speed:F2}");
+ public void StopMotion(uint motion)
+ => Calls.Add($"STOP {motion:x8}");
+ }
+
+ private static MotionInterpreter GroundedInterp()
+ {
+ var body = new PhysicsBody();
+ body.State |= PhysicsStateFlags.Gravity;
+ body.TransientState |= TransientStateFlags.Contact
+ | TransientStateFlags.OnWalkable
+ | TransientStateFlags.Active;
+ return new MotionInterpreter(body);
+ }
+
+ private static InboundInterpretedState Ims(
+ uint style = 0x8000003Du,
+ uint fwd = 0x41000003u, float fwdSpd = 1.0f,
+ uint side = 0u, float sideSpd = 1.0f,
+ uint turn = 0u, float turnSpd = 1.0f,
+ IReadOnlyList? actions = null)
+ => new()
+ {
+ CurrentStyle = style,
+ ForwardCommand = fwd, ForwardSpeed = fwdSpd,
+ SideStepCommand = side, SideStepSpeed = sideSpd,
+ TurnCommand = turn, TurnSpeed = turnSpd,
+ Actions = actions,
+ };
+
+ [Fact]
+ public void EmptyUm_DispatchesStyleThenReadyThenStops_RetailOrder()
+ {
+ // The flags=0 "empty" UM: all defaults → a wholesale stop. Live-trace
+ // golden (actor minterp 18e8b0f8): DIM style, DIM Ready, then the
+ // sidestep + turn stop notifications.
+ var mi = GroundedInterp();
+ var sink = new RecordingSink();
+
+ mi.MoveToInterpretedState(Ims(), sink);
+
+ Assert.Equal(new[]
+ {
+ "DIM 8000003d@1.00",
+ "DIM 41000003@1.00",
+ "STOP 6500000f",
+ "STOP 6500000d",
+ }, sink.Calls);
+ Assert.Equal(0x41000003u, mi.InterpretedState.ForwardCommand);
+ Assert.Equal(1.0f, mi.InterpretedState.ForwardSpeed);
+ }
+
+ [Fact]
+ public void RunUm_DispatchesRunAtWireSpeed_AndCachesMyRunRate()
+ {
+ // fwd=RunForward@2.85 — apply_interpreted_movement caches
+ // my_run_rate from forward_speed BEFORE dispatching (305718).
+ var mi = GroundedInterp();
+ var sink = new RecordingSink();
+
+ mi.MoveToInterpretedState(Ims(fwd: 0x44000007u, fwdSpd: 2.85f), sink);
+
+ Assert.Equal(new[]
+ {
+ "DIM 8000003d@1.00",
+ "DIM 44000007@2.85",
+ "STOP 6500000f",
+ "STOP 6500000d",
+ }, sink.Calls);
+ Assert.Equal(2.85f, mi.MyRunRate);
+ Assert.Equal(0x44000007u, mi.InterpretedState.ForwardCommand);
+ Assert.Equal(2.85f, mi.InterpretedState.ForwardSpeed);
+ }
+
+ [Fact]
+ public void WalkUm_DoesNotTouchMyRunRate()
+ {
+ var mi = GroundedInterp();
+ mi.MyRunRate = 2.5f;
+
+ mi.MoveToInterpretedState(Ims(fwd: 0x45000005u), new RecordingSink());
+
+ Assert.Equal(2.5f, mi.MyRunRate); // only RunForward caches
+ }
+
+ [Fact]
+ public void RunPlusTurnUm_TurnDispatched_NoTurnStop_NoIdleEnqueue()
+ {
+ // turn_command != 0 → DIM(turn) then EARLY RETURN — no turn-stop,
+ // no idle bookkeeping (305711-305713 early return).
+ var mi = GroundedInterp();
+ var sink = new RecordingSink();
+
+ mi.MoveToInterpretedState(
+ Ims(fwd: 0x44000007u, fwdSpd: 2.85f, turn: 0x6500000Du, turnSpd: 1.5f), sink);
+
+ Assert.Equal(new[]
+ {
+ "DIM 8000003d@1.00",
+ "DIM 44000007@2.85",
+ "STOP 6500000f",
+ "DIM 6500000d@1.50",
+ }, sink.Calls);
+ }
+
+ [Fact]
+ public void SidestepUm_DispatchedInsteadOfSidestepStop()
+ {
+ var mi = GroundedInterp();
+ var sink = new RecordingSink();
+
+ mi.MoveToInterpretedState(Ims(side: 0x6500000Fu, sideSpd: -1.2f), sink);
+
+ Assert.Equal(new[]
+ {
+ "DIM 8000003d@1.00",
+ "DIM 41000003@1.00",
+ "DIM 6500000f@-1.20",
+ "STOP 6500000d",
+ }, sink.Calls);
+ }
+
+ [Fact]
+ public void AirborneBody_NoCycleDispatches_OnlyTurnStop()
+ {
+ // Airborne (gravity on, no Contact): apply_interpreted_movement
+ // substitutes DIM(Falling 0x40000015) for the forward block
+ // (305723-305727), but DoInterpretedMotion's OWN contact gate
+ // (0x00528360) then takes the apply-only path for style + Falling —
+ // GetObjectSequence never fires. This is retail's real mechanism
+ // behind the K-fix17 "preserve the Falling cycle while airborne"
+ // empirical guard: airborne remotes simply don't re-cycle from UMs.
+ // Only the unconditional turn-stop notification comes through.
+ var body = new PhysicsBody(); // no Contact flag
+ body.State |= PhysicsStateFlags.Gravity;
+ var mi = new MotionInterpreter(body);
+ var sink = new RecordingSink();
+
+ mi.MoveToInterpretedState(Ims(fwd: 0x44000007u, fwdSpd: 2.85f), sink);
+
+ // Falling (0x40000015) is ALWAYS allowed by contact_allows_move
+ // (0x00528240 early-accept), so it reaches the sink; the style and
+ // forward dispatches are gate-blocked (apply-only path).
+ Assert.Equal(new[] { "DIM 40000015@1.00", "STOP 6500000d" }, sink.Calls);
+ // The interpreted STATE still flat-copies (velocity uses it on landing).
+ Assert.Equal(0x44000007u, mi.InterpretedState.ForwardCommand);
+ }
+
+ [Fact]
+ public void FlatCopy_OverwritesEveryAxis()
+ {
+ // copy_movement_from (0x0051e750) is a FLAT overwrite — a fresh UM
+ // with defaults clears a previously-set sidestep/turn.
+ var mi = GroundedInterp();
+ mi.MoveToInterpretedState(
+ Ims(fwd: 0x44000007u, fwdSpd: 2.85f, side: 0x6500000Fu, turn: 0x6500000Du),
+ new RecordingSink());
+
+ mi.MoveToInterpretedState(Ims(), new RecordingSink());
+
+ Assert.Equal(0x41000003u, mi.InterpretedState.ForwardCommand);
+ Assert.Equal(0u, mi.InterpretedState.SideStepCommand);
+ Assert.Equal(0u, mi.InterpretedState.TurnCommand);
+ }
+
+ [Fact]
+ public void RawStateStyle_AdoptedFromIms()
+ {
+ // move_to_interpreted_state head: raw_state.current_style =
+ // ims.current_style (305944).
+ var mi = GroundedInterp();
+ mi.MoveToInterpretedState(Ims(style: 0x8000003Cu), new RecordingSink());
+ Assert.Equal(0x8000003Cu, mi.RawState.CurrentStyle);
+ }
+
+ // ── action list: 15-bit server_action_stamp gate (305953-305989) ──────
+
+ [Fact]
+ public void Actions_FreshStamp_DispatchedAfterMovement_AndStampAdopted()
+ {
+ var mi = GroundedInterp();
+ var sink = new RecordingSink();
+ var actions = new[] { new InboundMotionAction(0x10000062u, Stamp: 5, Autonomous: false, Speed: 1.25f) };
+
+ mi.MoveToInterpretedState(Ims(actions: actions), sink);
+
+ Assert.Equal("DIM 10000062@1.25", sink.Calls[^1]); // after the movement dispatches
+ Assert.Equal(5, mi.ServerActionStamp);
+ }
+
+ [Fact]
+ public void Actions_StaleStamp_Skipped()
+ {
+ var mi = GroundedInterp();
+ mi.ServerActionStamp = 10;
+ var sink = new RecordingSink();
+
+ mi.MoveToInterpretedState(
+ Ims(actions: new[] { new InboundMotionAction(0x10000062u, 9, false, 1f) }), sink);
+
+ Assert.DoesNotContain(sink.Calls, c => c.StartsWith("DIM 10000062"));
+ Assert.Equal(10, mi.ServerActionStamp);
+ }
+
+ [Fact]
+ public void Actions_StampWrapsAt15Bits()
+ {
+ // The compare is 15-bit wraparound (mask 0x7fff, threshold 0x3fff).
+ var mi = GroundedInterp();
+ mi.ServerActionStamp = 0x7FFE;
+ var sink = new RecordingSink();
+
+ mi.MoveToInterpretedState(
+ Ims(actions: new[] { new InboundMotionAction(0x10000062u, 2, false, 1f) }), sink);
+
+ Assert.Contains(sink.Calls, c => c.StartsWith("DIM 10000062")); // 2 is newer than 0x7ffe
+ Assert.Equal(2, mi.ServerActionStamp);
+ }
+
+ [Fact]
+ public void Actions_AutonomousOnLocalPlayer_Skipped()
+ {
+ // Retail skips autonomous action replay on the LOCAL player (its own
+ // echo); remotes always apply (305977-305987).
+ var body = new PhysicsBody();
+ body.TransientState |= TransientStateFlags.Contact | TransientStateFlags.OnWalkable;
+ var mi = new MotionInterpreter(body) { IsLocalPlayer = true };
+ var sink = new RecordingSink();
+
+ mi.MoveToInterpretedState(
+ Ims(actions: new[] { new InboundMotionAction(0x10000062u, 5, Autonomous: true, 1f) }), sink);
+
+ Assert.DoesNotContain(sink.Calls, c => c.StartsWith("DIM 10000062"));
+ }
+
+ [Fact]
+ public void InboundState_Defaults_MatchRetailUnPack()
+ {
+ // InterpretedMotionState::UnPack absent-field defaults (0x0051f400):
+ // style NonCombat, fwd Ready, speeds 1.0, side/turn 0.
+ var d = InboundInterpretedState.Default();
+ Assert.Equal(0x8000003Du, d.CurrentStyle);
+ Assert.Equal(0x41000003u, d.ForwardCommand);
+ Assert.Equal(1.0f, d.ForwardSpeed);
+ Assert.Equal(0u, d.SideStepCommand);
+ Assert.Equal(1.0f, d.SideStepSpeed);
+ Assert.Equal(0u, d.TurnCommand);
+ Assert.Equal(1.0f, d.TurnSpeed);
+ }
+}
diff --git a/tests/AcDream.Core.Tests/Physics/MotionInterpreterTests.cs b/tests/AcDream.Core.Tests/Physics/MotionInterpreterTests.cs
index e2c4f896..7c3cb769 100644
--- a/tests/AcDream.Core.Tests/Physics/MotionInterpreterTests.cs
+++ b/tests/AcDream.Core.Tests/Physics/MotionInterpreterTests.cs
@@ -673,35 +673,24 @@ public sealed class MotionInterpreterTests
Assert.True(allowLeft);
}
- [Fact]
- public void ContactAllowsMove_FallenState_RejectsMove()
- {
- var body = MakeGrounded();
- var interp = MakeInterp(body);
- interp.InterpretedState.ForwardCommand = MotionCommand.Fallen;
-
- bool allowed = interp.contact_allows_move(MotionCommand.WalkForward);
-
- Assert.False(allowed);
- }
-
- [Fact]
- public void ContactAllowsMove_DeadState_RejectsMove()
- {
- var body = MakeGrounded();
- var interp = MakeInterp(body);
- interp.InterpretedState.ForwardCommand = MotionCommand.Dead;
-
- bool allowed = interp.contact_allows_move(MotionCommand.WalkForward);
-
- Assert.False(allowed);
- }
+ // L.2g S2 (2026-07-02): the posture-rejection tests that used to live
+ // here pinned a MISATTRIBUTED port — the Fallen/Dead/crouch-range checks
+ // belong to jump_charge_is_allowed (0x00527a50) / motion_allows_jump
+ // (0x005279e0), NOT to contact_allows_move. The real contact_allows_move
+ // (0x00528240, pseudo-C 305471) never reads the forward-command posture:
+ // a grounded creature in ANY posture may receive motion
+ // (GetObjectSequence handles the posture→locomotion transition via
+ // links). Verified against the live retail-observer trace
+ // (RetailObserverTraceConformanceTests, 183/183 dispatch conformant).
[Theory]
+ [InlineData(MotionCommand.Fallen)]
+ [InlineData(MotionCommand.Dead)]
[InlineData(MotionCommand.Crouch)]
[InlineData(MotionCommand.Sitting)]
[InlineData(MotionCommand.Sleeping)]
- public void ContactAllowsMove_PostureState_RejectsMove(uint postureCommand)
+ [InlineData(0x41000012u)] // inside the crouch range (0x41000011, 0x41000015)
+ public void ContactAllowsMove_GroundedPosture_StillAllowsMove(uint postureCommand)
{
var body = MakeGrounded();
var interp = MakeInterp(body);
@@ -709,20 +698,25 @@ public sealed class MotionInterpreterTests
bool allowed = interp.contact_allows_move(MotionCommand.WalkForward);
- Assert.False(allowed);
+ Assert.True(allowed);
}
[Fact]
- public void ContactAllowsMove_CrouchRange_RejectsMove()
+ public void ContactAllowsMove_AirborneCreature_AcceptsFallingAndTurns_BlocksWalk()
{
- var body = MakeGrounded();
+ // Verbatim 0x00528240: Falling (0x40000015) / Dead-class (0x40000011)
+ // and TurnLeft/TurnRight are ALWAYS allowed; a gravity-bound creature
+ // without Contact+OnWalkable is blocked for everything else
+ // (including the style command, which falls through to the gate).
+ var body = new PhysicsBody { State = PhysicsStateFlags.Gravity };
var interp = MakeInterp(body);
- // 0x41000012 is inside (0x41000011, 0x41000015) — crouch state
- interp.InterpretedState.ForwardCommand = 0x41000012u;
- bool allowed = interp.contact_allows_move(MotionCommand.WalkForward);
-
- Assert.False(allowed);
+ Assert.True(interp.contact_allows_move(MotionCommand.Falling));
+ Assert.True(interp.contact_allows_move(0x40000011u));
+ Assert.True(interp.contact_allows_move(MotionCommand.TurnRight));
+ Assert.True(interp.contact_allows_move(MotionCommand.TurnLeft));
+ Assert.False(interp.contact_allows_move(MotionCommand.WalkForward));
+ Assert.False(interp.contact_allows_move(0x8000003Du));
}
[Fact]
diff --git a/tests/AcDream.Core.Tests/Physics/RetailObserverTraceConformanceTests.cs b/tests/AcDream.Core.Tests/Physics/RetailObserverTraceConformanceTests.cs
new file mode 100644
index 00000000..8fab758b
--- /dev/null
+++ b/tests/AcDream.Core.Tests/Physics/RetailObserverTraceConformanceTests.cs
@@ -0,0 +1,174 @@
+using System;
+using System.Collections.Generic;
+using System.Globalization;
+using System.IO;
+using System.Linq;
+using System.Text.RegularExpressions;
+using AcDream.Core.Physics;
+using Xunit;
+
+namespace AcDream.Core.Tests.Physics;
+
+///
+/// L.2g S2 conformance harness, layer 1: golden fixtures parsed from a LIVE
+/// cdb trace of a RETAIL observer client
+/// (Fixtures/l2g-observer-trace.log, captured 2026-07-02 with
+/// tools/cdb/l2g-observer.cdb while a retail actor ran the structured
+/// motion protocol through ACE).
+///
+/// Each [MTIS] block is an exact INPUT (the InterpretedMotionState retail
+/// received, dumped field-by-field) and the [DIM] lines that follow on the
+/// same minterp are retail's exact OUTPUT (every DoInterpretedMotion
+/// dispatch, in order). We replay every input through acdream's funnel and
+/// assert an identical dispatch sequence — retail's actual runtime is the
+/// oracle, not anyone's reading of the decomp.
+///
+/// Exclusions (documented, not silent):
+/// - Action-class dispatches (0x10000000 bit) come from the UM's action
+/// LIST, which the [MTIS] struct dump doesn't include (LList pointer
+/// only) — filtered from both sides; covered by the synthetic action
+/// tests in MotionInterpreterFunnelTests instead.
+/// - motion==0x80000000 entries (the unpack-level DoMotion(command_ids[0])
+/// style call for wire style index 0) — outside
+/// move_to_interpreted_state; S3 wires the unpack-level style-on-change.
+///
+public class RetailObserverTraceConformanceTests
+{
+ private sealed record TraceCase(
+ int Line, string Minterp, InboundInterpretedState Ims, List Dims);
+
+ private sealed class RecordingSink : IInterpretedMotionSink
+ {
+ public readonly List Applied = new();
+ public void ApplyMotion(uint motion, float speed) => Applied.Add(motion);
+ public void StopMotion(uint motion) { }
+ }
+
+ private static string TracePath()
+ {
+ var dir = AppContext.BaseDirectory;
+ while (dir is not null && !File.Exists(Path.Combine(dir, "AcDream.slnx")))
+ dir = Directory.GetParent(dir)?.FullName;
+ Assert.NotNull(dir);
+ return Path.Combine(dir!, "tests", "AcDream.Core.Tests", "Fixtures", "l2g-observer-trace.log");
+ }
+
+ private static List ParseTrace()
+ {
+ var lines = File.ReadAllLines(TracePath());
+ var cases = new List();
+ var mtisRe = new Regex(@"\[MTIS\] minterp=(\w+)");
+ var fieldRe = new Regex(@"\+0x(\w+) (\w+)\s+: (\S+)");
+ var dimRe = new Regex(@"\[DIM\] minterp=(\w+) motion=(\w+)");
+
+ for (int i = 0; i < lines.Length; i++)
+ {
+ var m = mtisRe.Match(lines[i]);
+ if (!m.Success) continue;
+ string minterp = m.Groups[1].Value;
+
+ var ims = InboundInterpretedState.Default();
+ int j = i + 1;
+ for (; j < lines.Length; j++)
+ {
+ var f = fieldRe.Match(lines[j]);
+ if (!f.Success) break;
+ string name = f.Groups[2].Value;
+ string val = f.Groups[3].Value;
+ uint ParseHex() => Convert.ToUInt32(val, 16);
+ float ParseF() => float.Parse(val, CultureInfo.InvariantCulture);
+ switch (name)
+ {
+ case "current_style": ims.CurrentStyle = ParseHex(); break;
+ case "forward_command": ims.ForwardCommand = ParseHex(); break;
+ case "forward_speed": ims.ForwardSpeed = ParseF(); break;
+ case "sidestep_command": ims.SideStepCommand = ParseHex(); break;
+ case "sidestep_speed": ims.SideStepSpeed = ParseF(); break;
+ case "turn_command": ims.TurnCommand = ParseHex(); break;
+ case "turn_speed": ims.TurnSpeed = ParseF(); break;
+ }
+ }
+
+ // Collect this minterp's DIMs until the next UNPACK/MTIS event.
+ var dims = new List();
+ for (; j < lines.Length; j++)
+ {
+ if (lines[j].Contains("[UNPACK]") || lines[j].Contains("[MTIS]")) break;
+ var d = dimRe.Match(lines[j]);
+ if (d.Success && d.Groups[1].Value == minterp)
+ dims.Add(Convert.ToUInt32(d.Groups[2].Value, 16));
+ }
+
+ // A SECOND style dispatch marks a second apply_current_movement
+ // pass fired by the physics tick (HitGround / LeaveGround
+ // re-apply, CMotionInterp::HitGround 0x00528ac0) — not by this
+ // UM. Keep only the first pass as this UM's output. (2 cases in
+ // the capture — the actor's jump/land moments.)
+ int secondStyle = -1;
+ for (int k = 1; k < dims.Count; k++)
+ if (dims[k] == ims.CurrentStyle) { secondStyle = k; break; }
+ if (secondStyle > 0) dims = dims.Take(secondStyle).ToList();
+
+ cases.Add(new TraceCase(i + 1, minterp, ims, dims));
+ }
+ return cases;
+ }
+
+ private static bool IsExcluded(uint motion)
+ => (motion & 0x10000000u) != 0 // action-list dispatches, not in the dump
+ || motion == 0x80000000u; // unpack-level style-index-0 call
+
+ [Fact]
+ public void EveryTracedUm_ProducesRetailsExactDispatchSequence()
+ {
+ var cases = ParseTrace();
+ Assert.True(cases.Count > 100, $"expected >100 traced UMs, parsed {cases.Count}");
+
+ int verified = 0;
+ var failures = new List();
+ foreach (var c in cases)
+ {
+ // The trace breakpoint sits at DoInterpretedMotion ENTRY
+ // (pre-gate); the sink records POST-gate (GetObjectSequence)
+ // calls. For grounded bodies they coincide. A Falling dispatch
+ // for a non-Falling forward command marks the traced body as
+ // AIRBORNE at that moment (the actor's jump) — replay those
+ // with contact cleared, and drop the traced style entry from
+ // the expectation (called pre-gate, blocked post-gate).
+ bool airborne = c.Ims.ForwardCommand != 0x40000015u
+ && c.Dims.Contains(0x40000015u);
+
+ var body = new PhysicsBody();
+ body.State |= PhysicsStateFlags.Gravity;
+ body.TransientState |= TransientStateFlags.Active;
+ if (!airborne)
+ body.TransientState |= TransientStateFlags.Contact
+ | TransientStateFlags.OnWalkable;
+ var mi = new MotionInterpreter(body);
+ var sink = new RecordingSink();
+
+ mi.MoveToInterpretedState(c.Ims, sink);
+
+ var expected = c.Dims.Where(d => !IsExcluded(d)
+ && (!airborne || d != c.Ims.CurrentStyle)).ToList();
+ var actual = sink.Applied.Where(d => !IsExcluded(d)).ToList();
+ if (!expected.SequenceEqual(actual))
+ {
+ failures.Add(
+ $"line {c.Line} minterp {c.Minterp}: " +
+ $"fwd=0x{c.Ims.ForwardCommand:X8}@{c.Ims.ForwardSpeed:F2} " +
+ $"side=0x{c.Ims.SideStepCommand:X8} turn=0x{c.Ims.TurnCommand:X8} — " +
+ $"retail [{string.Join(",", expected.Select(d => d.ToString("X8")))}] " +
+ $"vs acdream [{string.Join(",", actual.Select(d => d.ToString("X8")))}]");
+ }
+ else
+ {
+ verified++;
+ }
+ }
+
+ Assert.True(failures.Count == 0,
+ $"{failures.Count} of {cases.Count} traced UMs diverged "
+ + $"({verified} conformant):\n" + string.Join("\n", failures.Take(12)));
+ }
+}