t2-demo-parser 1.0.1 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/BitStream.js.map +1 -1
- package/dist/BitStream.test.js.map +1 -1
- package/dist/ClassRegistry.js.map +1 -1
- package/dist/ClassRegistry.test.js.map +1 -1
- package/dist/DataBlockParsers.d.ts.map +1 -1
- package/dist/DataBlockParsers.js +43 -38
- package/dist/DataBlockParsers.js.map +1 -1
- package/dist/DataBlockParsers.test.js +30 -0
- package/dist/DataBlockParsers.test.js.map +1 -1
- package/dist/DemoParser.js.map +1 -1
- package/dist/DemoParser.test.js.map +1 -1
- package/dist/EventParsers.js.map +1 -1
- package/dist/GhostManager.js.map +1 -1
- package/dist/GhostTracker.test.js.map +1 -1
- package/dist/HuffmanProcessor.js.map +1 -1
- package/dist/LiveParser.js.map +1 -1
- package/dist/PacketParser.js.map +1 -1
- package/dist/Timeline.js.map +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/dataBlockDataTypes.d.ts +28 -21
- package/dist/dataBlockDataTypes.d.ts.map +1 -1
- package/dist/dataBlockDataTypes.js.map +1 -1
- package/dist/dataTypes.js.map +1 -1
- package/dist/dump.js.map +1 -1
- package/dist/eventDataTypes.js.map +1 -1
- package/dist/ghostDataTypes.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DataBlockParsers.test.js","sourceRoot":"","sources":["../src/DataBlockParsers.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DataBlockParsers.test.js","sourceRoot":"","sources":["../src/DataBlockParsers.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { describe, it, expect } from \"vitest\";\nimport * as fs from \"fs\";\nimport * as path from \"path\";\nimport { DemoParser } from \"./DemoParser.js\";\nimport type {\n LinearProjectileDataBlock,\n PlayerDataBlock,\n TracerProjectileDataBlock,\n} from \"./dataBlockDataTypes.js\";\n\nconst DEMO_DIR = path.resolve(import.meta.dirname, \"..\", \"data\");\n\nasync function loadDataBlocks(file: string) {\n const buffer = fs.readFileSync(path.join(DEMO_DIR, file));\n const parser = new DemoParser(new Uint8Array(buffer));\n const { initialBlock } = await parser.load();\n return initialBlock.dataBlocks;\n}\n\n/**\n * Regression tests for projectile datablock field naming, which was\n * binary-verified against Tribes2.exe build 25034 (initPersistFields\n * FUN_0062b3c0 / FUN_0063fcb0 map names to the struct offsets that\n * unpackData reads in order). Prior to that verification several fields\n * were misassigned — most damagingly, the true lifetimeMS landed in a\n * field named `fizzleType`, breaking client-side projectile simulation.\n */\ndescribe(\"projectile datablock field decoding\", () => {\n it(\"decodes LinearProjectileData fields with engine semantics\", async () => {\n const dataBlocks = await loadDataBlocks(\"exogen_Katabatic_vpad.rec\");\n const linears: LinearProjectileDataBlock[] = [];\n for (const [, db] of dataBlocks) {\n if (\n db.className === \"LinearProjectileData\" ||\n db.className === \"TracerProjectileData\" ||\n db.className === \"LinearFlareProjectileData\"\n ) {\n linears.push(db.data as LinearProjectileDataBlock);\n }\n }\n expect(linears.length).toBeGreaterThan(0);\n\n for (const block of linears) {\n // lifetimeMS/fizzleTimeMS are real milliseconds, rounded up to a\n // 32ms tick by the engine's onAdd, and clamped to 511 ticks.\n expect(block.lifetimeMS! % 32).toBe(0);\n expect(block.lifetimeMS).toBeGreaterThanOrEqual(32);\n expect(block.lifetimeMS).toBeLessThanOrEqual(511 * 32);\n expect(block.fizzleTimeMS! % 32).toBe(0);\n // Angles are ranged 0–90 degrees on the wire.\n expect(block.reflectOnWaterImpactAngle).toBeGreaterThanOrEqual(0);\n expect(block.reflectOnWaterImpactAngle).toBeLessThanOrEqual(90);\n expect(typeof block.explodeOnDeath).toBe(\"boolean\");\n expect(typeof block.doDynamicClientHits).toBe(\"boolean\");\n }\n });\n\n it(\"decodes retail DiscProjectile exactly\", async () => {\n const dataBlocks = await loadDataBlocks(\"exogen_Katabatic_vpad.rec\");\n let disc: LinearProjectileDataBlock | undefined;\n for (const [, db] of dataBlocks) {\n const data = db.data as LinearProjectileDataBlock;\n if (\n db.className === \"LinearProjectileData\" &&\n data.dryVelocity === 90 &&\n data.explodeOnDeath === true\n ) {\n disc = data;\n break;\n }\n }\n expect(disc, \"retail DiscProjectile datablock\").toBeDefined();\n // disc.cs: lifetimeMS = fizzleTimeMS = 5000 → tick-rounded to 5024.\n expect(disc!.lifetimeMS).toBe(5024);\n expect(disc!.fizzleTimeMS).toBe(5024);\n // disc.cs: reflectOnWaterImpactAngle = 15.0.\n expect(disc!.reflectOnWaterImpactAngle).toBe(15);\n });\n\n it(\"decodes retail ChaingunBullet tracer fields exactly\", async () => {\n const dataBlocks = await loadDataBlocks(\"exogen_Katabatic_vpad.rec\");\n let bullet: TracerProjectileDataBlock | undefined;\n for (const [, db] of dataBlocks) {\n const data = db.data as TracerProjectileDataBlock;\n if (\n db.className === \"TracerProjectileData\" &&\n data.tracerTex0 === \"special/tracer00\" &&\n data.lifetimeMS === 3008\n ) {\n bullet = data;\n break;\n }\n }\n expect(bullet, \"ChaingunBullet datablock\").toBeDefined();\n // Values as recorded in this demo (a lightly modded server — tracer\n // length/width are doubled from retail, everything else matches\n // chaingun.cs). Each assertion pins a decode position: a swap with\n // any neighboring field would produce a nonsensical value here.\n expect(bullet!.dryVelocity).toBe(750);\n expect(bullet!.wetVelocity).toBe(280);\n expect(bullet!.fizzleTimeMS).toBe(3008);\n expect(bullet!.explodeOnDeath).toBe(false);\n // Chainguns are the only retail weapons with doDynamicClientHits.\n expect(bullet!.doDynamicClientHits).toBe(true);\n // activateDelayMS = -1 (retail default) read as U32.\n expect(bullet!.activateDelayMS).toBe(0xffffffff);\n expect(bullet!.tracerLength).toBe(30);\n expect(bullet!.tracerMinPixels).toBe(6);\n expect(bullet!.tracerWidth).toBeCloseTo(0.2, 5);\n expect(bullet!.tracerAlpha).toBe(false);\n // Retail chaingun.cs tracerColor: 211/255, 215/255, 120/255, 0.75.\n expect(bullet!.tracerColor!.r).toBeCloseTo(211 / 255, 2);\n expect(bullet!.tracerColor!.g).toBeCloseTo(215 / 255, 2);\n expect(bullet!.tracerColor!.b).toBeCloseTo(120 / 255, 2);\n expect(bullet!.crossViewAng).toBeCloseTo(0.99, 5);\n expect(bullet!.crossSize).toBeCloseTo(0.2, 5);\n expect(bullet!.renderCross).toBe(true);\n expect(bullet!.tracerTex1).toBe(\"special/tracercross\");\n });\n\n it(\"decodes PlayerData movement/jet fields with engine semantics\", async () => {\n const dataBlocks = await loadDataBlocks(\"exogen_Katabatic_vpad.rec\");\n let armor: PlayerDataBlock | undefined;\n for (const [, db] of dataBlocks) {\n const data = db.data as PlayerDataBlock;\n // The armor the recorder wears: retail-value run/speed section.\n if (db.className === \"PlayerData\" && data.maxForwardSpeed === 15) {\n armor = data;\n break;\n }\n }\n expect(armor, \"light armor PlayerData datablock\").toBeDefined();\n // Retail player.cs values — each pins a decode position (previously\n // these landed in fields named jumpForce/runSurfaceAngle/etc.).\n expect(armor!.runForce).toBe(4968); // 55.2 * 90\n expect(armor!.maxBackwardSpeed).toBe(13);\n expect(armor!.maxSideSpeed).toBe(13);\n expect(armor!.underwaterVertJetFactor).toBeCloseTo(1.5, 5);\n expect(armor!.minLookAngle).toBeCloseTo(-1.5, 5);\n expect(armor!.maxLookAngle).toBeCloseTo(1.5, 5);\n // Jet energy fields must decode as plausible per-tick magnitudes\n // (this server mods them slightly, so no exact match): drain is a\n // fraction of maxEnergy(60), threshold is a small energy value.\n expect(armor!.jetEnergyDrain).toBeGreaterThan(0);\n expect(armor!.jetEnergyDrain).toBeLessThan(5);\n expect(armor!.underwaterJetEnergyDrain).toBeGreaterThan(0);\n expect(armor!.underwaterJetEnergyDrain).toBeLessThan(5);\n expect(armor!.minJetEnergy).toBeGreaterThanOrEqual(0);\n expect(armor!.minJetEnergy).toBeLessThan(10);\n });\n});\n"]}
|
package/dist/DemoParser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DemoParser.js","sourceRoot":"","sources":["../src/DemoParser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DemoParser.js","sourceRoot":"","sources":["../src/DemoParser.ts"],"names":[],"mappings":"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","sourcesContent":["import { inflate } from \"fflate\";\nimport createDebug from \"debug\";\nimport { BitStream } from \"./BitStream.js\";\nimport { PacketParser } from \"./PacketParser.js\";\nimport { ClassRegistry } from \"./ClassRegistry.js\";\nimport type { GhostParserEntry } from \"./ClassRegistry.js\";\nimport { GhostTracker, registerGhostParsers } from \"./GhostManager.js\";\nimport { registerEventParsers } from \"./EventParsers.js\";\nimport { registerDataBlockParsers } from \"./DataBlockParsers.js\";\nimport {\n BlockTypePacket,\n BlockTypeSendPacket,\n BlockTypeMove,\n BlockTypeInfo,\n MaxTriggerKeys,\n NetEventClassBitSize,\n NetEventClassFirst,\n NetObjectClassBitSize,\n NetObjectClassFirst,\n GhostIdBitSize,\n DataBlockClassFirst,\n DataBlockClassNames,\n NetObjectClassNames,\n NetEventClassNames,\n SimDBEventObjectIdBits,\n SimDBEventClassIdBits,\n SimDBEventIndexBits,\n SimDBEventTotalBits,\n} from \"./types.js\";\nimport type {\n DemoHeader,\n DemoFile,\n DemoBlock,\n InitialBlockData,\n ConnectionProtocolState,\n DataBlockHeader,\n ParsedDataBlock,\n PathManagerEntry,\n ScoreEntry,\n TargetEntry,\n Move,\n InfoBlock,\n GhostUpdate,\n NetEventInfo,\n LoadResult,\n} from \"./types.js\";\n\nconst debug = createDebug(\"t2-demo-parser\");\nconst debugInitial = createDebug(\"t2-demo-parser:initial\");\nconst debugBlocks = createDebug(\"t2-demo-parser:blocks\");\n\nexport class DemoParser {\n private buffer: Uint8Array;\n private view: DataView;\n private offset: number;\n private registry: ClassRegistry;\n private ghostTracker: GhostTracker;\n private packetParser: PacketParser;\n // Stepping API state\n private _loaded = false;\n private _header?: DemoHeader;\n private _initialBlock?: InitialBlockData;\n private _decompressedData?: Uint8Array;\n private _decompressedView?: DataView;\n private _blockStreamOffset = 0;\n private _blockCount?: number;\n private _blockCursor = 0;\n\n constructor(buffer: Uint8Array) {\n this.buffer = buffer;\n this.view = new DataView(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n this.offset = 0;\n this.registry = new ClassRegistry();\n this.ghostTracker = new GhostTracker();\n\n // Register parser catalogs\n registerEventParsers(this.registry);\n registerGhostParsers(this.registry);\n registerDataBlockParsers(this.registry);\n\n // Bind DataBlock parsers deterministically using the known class name\n // mapping derived from binary analysis of the Tribes 2 executable.\n // ClassIds are assigned alphabetically (C strcmp) starting at\n // DataBlockClassFirst (128).\n const { bound: dbBound, missing: dbMissing } =\n this.registry.bindDeterministicDataBlocks(\n DataBlockClassNames,\n DataBlockClassFirst\n );\n if (dbMissing.length > 0) {\n debug(\n \"DataBlock binding: %d/%d bound, missing parsers: %s\",\n dbBound, DataBlockClassNames.length, dbMissing.join(\", \")\n );\n }\n\n // Bind ghost (NetObject) parsers deterministically using the known\n // class name mapping derived from binary analysis. The 53 NetObject\n // classes are sorted alphabetically (C strcmp) and assigned sequential\n // classIds starting at NetObjectClassFirst (0).\n const { bound: ghostBound, missing: ghostMissing } =\n this.registry.bindDeterministicGhosts(\n NetObjectClassNames,\n NetObjectClassFirst\n );\n if (ghostMissing.length > 0) {\n debug(\n \"Ghost binding: %d/%d bound, missing parsers: %s\",\n ghostBound, NetObjectClassNames.length, ghostMissing.join(\", \")\n );\n }\n\n // Bind event (NetEvent) parsers deterministically using the known\n // class name mapping derived from binary analysis. The 26 NetEvent\n // classes are sorted alphabetically (C strcmp) and assigned sequential\n // classIds starting at NetEventClassFirst (255).\n const { bound: eventBound, missing: eventMissing } =\n this.registry.bindDeterministicEvents(\n NetEventClassNames,\n NetEventClassFirst\n );\n if (eventMissing.length > 0) {\n debug(\n \"Event binding: %d/%d bound, missing parsers: %s\",\n eventBound, NetEventClassNames.length, eventMissing.join(\", \")\n );\n }\n\n this.packetParser = new PacketParser(this.registry, this.ghostTracker);\n }\n\n getRegistry(): ClassRegistry {\n return this.registry;\n }\n\n getGhostTracker(): GhostTracker {\n return this.ghostTracker;\n }\n\n getPacketParser(): PacketParser {\n return this.packetParser;\n }\n\n // --- Stepping API getters ---\n\n get loaded(): boolean {\n return this._loaded;\n }\n\n get header(): DemoHeader {\n if (!this._loaded) throw new Error(\"must call load() first\");\n return this._header!;\n }\n\n get initialBlock(): InitialBlockData {\n if (!this._loaded) throw new Error(\"must call load() first\");\n return this._initialBlock!;\n }\n\n get blockCount(): number {\n if (!this._loaded) throw new Error(\"must call load() first\");\n if (this._blockCount === undefined) {\n // Lazy scan: walk decompressed buffer counting U16 headers\n const data = this._decompressedData!;\n const view = this._decompressedView!;\n let count = 0;\n let off = 0;\n while (off + 2 <= data.length) {\n const typeSize = view.getUint16(off, true);\n const size = typeSize & 0xfff;\n off += 2 + size;\n if (off > data.length) break;\n count++;\n }\n this._blockCount = count;\n }\n return this._blockCount;\n }\n\n get blockCursor(): number {\n if (!this._loaded) throw new Error(\"must call load() first\");\n return this._blockCursor;\n }\n\n // --- Stepping API methods ---\n\n /**\n * Async load: parses header, initial block (DataBlocks, events,\n * ghosts, control object, mission name), and asynchronously decompresses\n * the block stream. No block indexing — blocks are read lazily via nextBlock().\n *\n * Idempotent — second call returns cached result.\n */\n async load(): Promise<LoadResult> {\n if (this._loaded) {\n return {\n header: this._header!,\n initialBlock: this._initialBlock!,\n };\n }\n\n // Phase 1: header + initial block\n const header = this.readHeader();\n debug(\n 'header: \"%s\" version=0x%s length=%dms (%smin) initialBlockSize=%d',\n header.identString, header.protocolVersion.toString(16),\n header.demoLengthMs, (header.demoLengthMs / 1000 / 60).toFixed(1),\n header.initialBlockSize\n );\n\n const initialBlockData = this.buffer.subarray(\n this.offset,\n this.offset + header.initialBlockSize\n );\n const initialBlock = this.readInitialBlock(initialBlockData);\n this.offset += header.initialBlockSize;\n\n // Phase 2: async decompress block stream\n const compressedData = this.buffer.subarray(this.offset);\n debug(\"compressed block stream: %d bytes\", compressedData.length);\n\n const decompressedData = await new Promise<Uint8Array>((resolve, reject) => {\n inflate(compressedData, (err, data) => {\n if (err) reject(err);\n else resolve(data);\n });\n });\n debug(\"decompressed block stream: %d bytes\", decompressedData.length);\n\n this._decompressedData = decompressedData;\n this._decompressedView = new DataView(\n decompressedData.buffer,\n decompressedData.byteOffset,\n decompressedData.byteLength\n );\n\n // Phase 3: set up PacketParser with seeded ghost tracker\n this.setupPacketParser(initialBlock);\n\n // Cache results\n this._header = header;\n this._initialBlock = initialBlock;\n this._blockStreamOffset = 0;\n this._blockCursor = 0;\n this._loaded = true;\n\n return { header, initialBlock };\n }\n\n /**\n * Read and parse the next block from the decompressed buffer.\n * Returns the parsed block, or undefined when all blocks are exhausted.\n * Each block is transient — only one in memory at a time.\n * Throws if load() has not been called.\n */\n nextBlock(): DemoBlock | undefined {\n if (!this._loaded) throw new Error(\"must call load() first\");\n const data = this._decompressedData!;\n const view = this._decompressedView!;\n const off = this._blockStreamOffset;\n\n if (off + 2 > data.length) return undefined;\n\n const typeSize = view.getUint16(off, true);\n const type = typeSize >> 12;\n const size = typeSize & 0xfff;\n\n if (off + 2 + size > data.length) {\n debugBlocks(\n \"block %d: size %d would exceed decompressed data (offset=%d remaining=%d), stopping\",\n this._blockCursor, size, off + 2, data.length - off - 2\n );\n return undefined;\n }\n\n const blockData = data.subarray(off + 2, off + 2 + size);\n this._blockStreamOffset = off + 2 + size;\n\n const block: DemoBlock = {\n index: this._blockCursor,\n type,\n size,\n data: blockData,\n };\n this._blockCursor++;\n\n if (type === BlockTypePacket) {\n try {\n block.parsed = this.packetParser.parsePacket(blockData);\n } catch {\n // Skip unparseable packets\n }\n } else if (type === BlockTypeSendPacket) {\n this.packetParser.onSendPacketTrigger();\n } else if (type === BlockTypeMove && size === 64) {\n try {\n block.parsed = this.readRawMove(blockData);\n } catch {\n // Skip unparseable moves\n }\n } else if (type === BlockTypeInfo && size === 8) {\n try {\n block.parsed = this.readInfoBlock(blockData);\n } catch {\n // Skip unparseable info blocks\n }\n }\n\n return block;\n }\n\n /**\n * Reset stepping state: resets stream offset and cursor to 0,\n * clears cached block count, and re-initializes the PacketParser\n * with a fresh ghost tracker seeded from the initial block.\n * Throws if load() has not been called.\n */\n reset(): void {\n if (!this._loaded) throw new Error(\"must call load() first\");\n\n this._blockStreamOffset = 0;\n this._blockCursor = 0;\n this._blockCount = undefined;\n\n // Fresh ghost tracker + packet parser\n this.setupPacketParser(this._initialBlock!);\n }\n\n /**\n * Fast-forward through N blocks, processing each but not returning them.\n * Returns the number of blocks actually processed (may be less than count\n * if the stream is exhausted).\n * Throws if load() has not been called.\n */\n processBlocks(count: number): number {\n if (!this._loaded) throw new Error(\"must call load() first\");\n let processed = 0;\n for (let i = 0; i < count; i++) {\n if (!this.nextBlock()) break;\n processed++;\n }\n return processed;\n }\n\n /**\n * Set up a fresh PacketParser seeded from the initial block's ghosts\n * and with the DataBlock data map for ghost parsers. Replaces\n * this.ghostTracker and this.packetParser.\n */\n private setupPacketParser(initialBlock: InitialBlockData): void {\n // Build DataBlock data map (objectId → parsed data)\n const dataBlockDataMap = new Map<number, Record<string, unknown>>();\n for (const [objectId, db] of initialBlock.dataBlocks) {\n dataBlockDataMap.set(objectId, db.data);\n }\n\n // Seed ghost tracker from initial block ghosts\n const gt = new GhostTracker();\n for (const ghost of initialBlock.initialGhosts) {\n if (ghost.type !== \"create\" || ghost.classId === undefined) continue;\n const parserEntry = this.registry.getGhostParser(ghost.classId);\n gt.createGhost(\n ghost.index,\n ghost.classId,\n parserEntry?.name ?? `unknown_${ghost.classId}`\n );\n }\n\n const pp = new PacketParser(this.registry, gt, {\n dataBlockDataMap,\n connectionProtocolState: initialBlock.connectionState,\n nextRecvEventSeq: initialBlock.nextRecvEventSeq,\n });\n\n this.ghostTracker = gt;\n this.packetParser = pp;\n }\n\n /**\n * Full parse: async load + drain all blocks.\n */\n async parseFullDemo(): Promise<DemoFile> {\n const { header, initialBlock } = await this.load();\n const blocks: DemoBlock[] = [];\n let block: DemoBlock | undefined;\n while ((block = this.nextBlock())) blocks.push(block);\n return { header, initialBlock, blocks };\n }\n\n private readHeader(): DemoHeader {\n // Read the identification string: U8 length + string\n const strLen = this.view.getUint8(this.offset);\n this.offset += 1;\n const identString = new TextDecoder(\"ascii\").decode(\n this.buffer.subarray(this.offset, this.offset + strLen)\n );\n this.offset += strLen;\n\n // U32 protocol version\n const protocolVersion = this.view.getUint32(this.offset, true);\n this.offset += 4;\n\n // U32 demo length in ms\n const demoLengthMs = this.view.getUint32(this.offset, true);\n this.offset += 4;\n\n // U32 initial block size\n const initialBlockSize = this.view.getUint32(this.offset, true);\n this.offset += 4;\n\n return { identString, protocolVersion, demoLengthMs, initialBlockSize };\n }\n\n /** Parse the initial block: DataBlocks, scores, targets, connection state,\n * events, ghosts, control object, and mission name. */\n private readInitialBlock(data: Uint8Array): InitialBlockData {\n const bs = new BitStream(data);\n\n // --- A. Tagged string table (1024 entries) ---\n const taggedStrings = new Map<number, string>();\n for (let i = 0; i < 1024; i++) {\n if (bs.readFlag()) {\n taggedStrings.set(i, bs.readString());\n }\n }\n debugInitial(\"after tagged strings bit=%d count=%d\", bs.getCurPos(), taggedStrings.size);\n\n // --- B.1 U32 datablockCount ---\n const expectedDataBlockCount = bs.readU32();\n\n // --- B.2 DataBlock loop ---\n const dataBlockHeaders: DataBlockHeader[] = [];\n const dataBlocks = new Map<number, ParsedDataBlock>();\n let dataBlockCount = 0;\n\n while (bs.readFlag()) {\n dataBlockCount++;\n const modified = bs.readFlag();\n if (!modified) {\n continue;\n }\n\n const objectId = bs.readInt(SimDBEventObjectIdBits);\n const classId = bs.readInt(SimDBEventClassIdBits) + DataBlockClassFirst;\n const index = bs.readInt(SimDBEventIndexBits);\n const total = bs.readInt(SimDBEventTotalBits);\n const dataBitsStart = bs.getCurPos();\n\n dataBlockHeaders.push({ objectId, classId, index, total, dataBitsStart });\n\n const parserEntry = this.registry.getDataBlockParser(classId);\n if (parserEntry) {\n const parsedData = parserEntry.unpackData(bs);\n dataBlocks.set(objectId, {\n classId,\n className: parserEntry.name,\n objectId,\n data: parsedData,\n });\n } else {\n const className = classId >= DataBlockClassFirst &&\n classId < DataBlockClassFirst + DataBlockClassNames.length\n ? DataBlockClassNames[classId - DataBlockClassFirst]\n : `unknown(${classId})`;\n throw new Error(\n `No parser for DataBlock classId ${classId} (${className}) at bit ${dataBitsStart}`\n );\n }\n }\n\n debug(\n \"all %d/%d DataBlocks parsed (%d payloads), bit position after DataBlocks: %d\",\n dataBlockCount, expectedDataBlockCount, dataBlocks.size, bs.getCurPos()\n );\n\n // --- B.3 $firstPerson (U8 boolean from GameConnection::writeDemoStartBlock) ---\n const firstPerson = bs.readU8() !== 0;\n // --- B.4 6× U32 connection fields ---\n // @0x8384, @0x8388, @0x83f8, @0x83fc, @0x8400, @0x8434\n const connectionFields: number[] = [];\n for (let i = 0; i < 6; i++) connectionFields.push(bs.readU32());\n\n // --- B.5 16× U32 state array ---\n // @0x83b8 + i*4, i=0..15\n const stateArray: number[] = [];\n for (let i = 0; i < 16; i++) stateArray.push(bs.readU32());\n\n // --- B.6 U32 score entry count ---\n const scoreCount = bs.readU32();\n\n // --- B.7 Score entries × count (FUN_00601800) ---\n const scoreEntries: ScoreEntry[] = [];\n for (let i = 0; i < scoreCount; i++) {\n scoreEntries.push(this.readScoreEntry(bs));\n }\n debugInitial(\"after score entries bit=%d scoreCount=%d\", bs.getCurPos(), scoreCount);\n\n // B.8: FUN_005fb130 — clears internal state, no bitstream I/O\n\n // --- B.8 DemoValues ---\n const demoValues = this.readDemoValues(bs);\n debugInitial(\"after demo values bit=%d demoValues=%d\", bs.getCurPos(), demoValues.length);\n\n // --- B.9 Complex TargetManager (FUN_00670660) ---\n const { sensorGroupColors, targets: targetEntries } = this.readComplexTargetManager(bs);\n debugInitial(\"after complex target manager bit=%d targets=%d sensorGroupColors=%d\", bs.getCurPos(), targetEntries.length, sensorGroupColors.length);\n\n // --- B.10 Parent: NetConnection::readDemoStartBlock (FUN_00588260) ---\n\n // B.10a ConnectionProtocol (FUN_0043d820)\n const connectionState = this.readConnectionProtocol(bs);\n debugInitial(\n \"after connection protocol bit=%d lastRecv=%d highestAck=%d lastSend=%d connected=%s\",\n bs.getCurPos(), connectionState.lastSeqRecvd, connectionState.highestAckedSeq,\n connectionState.lastSendSeq, connectionState.connectionEstablished\n );\n\n // B.10b RTT, B.10c packet loss\n const roundTripTime = bs.readF32();\n const packetLoss = bs.readF32();\n debugInitial(\"after RTT/loss bit=%d rtt=%d loss=%d\", bs.getCurPos(), roundTripTime, packetLoss);\n\n // B.10d PathManager (FUN_00591ce0)\n const pathManager = this.readPathManager(bs);\n debugInitial(\"after path manager bit=%d entries=%d\", bs.getCurPos(), pathManager.length);\n\n // B.10e Notify count only (FUN_00588260).\n // The reader allocates notify nodes in memory but does not consume\n // per-notify records from the bitstream in this phase.\n const notifyCount = bs.readU32();\n debugInitial(\"after notify count bit=%d notifyCount=%d\", bs.getCurPos(), notifyCount);\n\n // --- B.10f through B.15: events, ghosts, control object, mission ---\n // Uses a temporary ghost tracker for initial-block ghost parsing only.\n const totalBits = bs.getBuffer().length * 8;\n const ibGhostTracker = new GhostTracker();\n const savedGhostTracker = this.ghostTracker;\n this.ghostTracker = ibGhostTracker;\n\n let initialEvents: NetEventInfo[] = [];\n let nextRecvEventSeq = 0;\n let ghostingSequence = 0;\n let initialGhosts: GhostUpdate[] = [];\n let controlObjectGhostIndex = -1;\n let controlObjectData: Record<string, unknown> | undefined;\n let missionName = \"\";\n let missionCRC = 0;\n let phase2Error: string | undefined;\n try {\n debugInitial(\"phase2 start bit=%d remaining=%d\", bs.getCurPos(), totalBits - bs.getCurPos());\n\n // B.10f Events\n ({ nextRecvEventSeq, events: initialEvents } = this.readEventStartBlock(bs));\n debugInitial(\"after initial events bit=%d count=%d\", bs.getCurPos(), initialEvents.length);\n\n // B.10g Ghosts\n const ghostResult = this.readGhostStartBlock(bs, dataBlocks);\n ghostingSequence = ghostResult.ghostingSequence;\n initialGhosts = ghostResult.ghosts;\n debugInitial(\"after initial ghosts bit=%d count=%d seq=%d\", bs.getCurPos(), initialGhosts.length, ghostingSequence);\n\n // B.11 controlObjectGhostIndex\n controlObjectGhostIndex = bs.readS32();\n debugInitial(\"after control ghost index bit=%d control=%d\", bs.getCurPos(), controlObjectGhostIndex);\n\n // B.12 If != -1: controlObject readPacketData\n if (controlObjectGhostIndex !== -1) {\n const ghost = ibGhostTracker.getGhost(controlObjectGhostIndex);\n if (ghost) {\n const parser = this.registry.getGhostParser(ghost.classId);\n if (parser?.readPacketData) {\n const conn = {\n compressionPoint: { x: 0, y: 0, z: 0 },\n ghostTracker: ibGhostTracker,\n };\n controlObjectData = parser.readPacketData(bs, conn);\n debugInitial(\"after control readPacketData bit=%d parser=%s\", bs.getCurPos(), parser.name);\n }\n }\n }\n\n // B.13 $MissionName\n missionName = bs.readString();\n // B.14 mMissionCRC\n missionCRC = bs.readU32();\n // Byte-align (validate) before SimpleTargetManagers\n bs.setCurPos(((bs.getCurPos() + 7) >> 3) << 3);\n // B.15 Simple TargetManager ×2\n this.readSimpleTargetManager(bs);\n this.readSimpleTargetManager(bs);\n debugInitial('after sequential tail bit=%d mission=\"%s\" CRC=0x%s', bs.getCurPos(), missionName, missionCRC.toString(16));\n } catch (e) {\n phase2Error = e instanceof Error ? e.message : String(e);\n } finally {\n this.ghostTracker = savedGhostTracker;\n }\n\n const remaining = totalBits - bs.getCurPos();\n const missionPrintableRatio = missionName.length > 0\n ? missionName\n .split(\"\")\n .filter((c) => {\n const code = c.charCodeAt(0);\n return code >= 0x20 && code <= 0x7e;\n }).length / missionName.length\n : 1;\n const phase2Valid =\n missionName.length > 0 &&\n missionPrintableRatio >= 0.8 &&\n phase2Error === undefined;\n\n debug(\n 'initial block: events=%d ghosts=%d ghostingSeq=%d controlObj=%d mission=\"%s\" CRC=0x%s valid=%s%s',\n initialEvents.length, initialGhosts.length, ghostingSequence,\n controlObjectGhostIndex, missionName, missionCRC.toString(16),\n phase2Valid, phase2Error ? ` error=${phase2Error}` : \"\"\n );\n\n return {\n taggedStrings,\n dataBlockHeaders,\n dataBlockCount,\n dataBlocks,\n firstPerson,\n connectionFields,\n stateArray,\n scoreEntries,\n demoValues,\n sensorGroupColors,\n targetEntries,\n connectionState,\n roundTripTime,\n packetLoss,\n pathManager,\n notifyCount,\n nextRecvEventSeq,\n ghostingSequence,\n initialGhosts,\n initialEvents,\n controlObjectGhostIndex,\n controlObjectData,\n missionName,\n missionCRC,\n phase2TrailingBits: remaining,\n phase2Valid,\n phase2Error,\n };\n }\n\n /**\n * Read a score entry from FUN_00601800.\n * Format: 3 conditional U16s + 3 U6s + 1 flag + 6 flags.\n */\n private readScoreEntry(bs: BitStream): ScoreEntry {\n const clientId = bs.readFlag() ? bs.readInt(16) : 0;\n const teamId = bs.readFlag() ? bs.readInt(16) : 0;\n const score = bs.readFlag() ? bs.readInt(16) : 0;\n const field0 = bs.readInt(6);\n const field1 = bs.readInt(6);\n const field2 = bs.readInt(6);\n // FUN_006014e0: post-processing, no stream reads\n const isBot = bs.readFlag();\n const triggerFlags: boolean[] = [];\n for (let i = 0; i < 6; i++) triggerFlags.push(bs.readFlag());\n return { clientId, teamId, score, field0, field1, field2, isBot, triggerFlags };\n }\n\n /**\n * Read DemoValues from FUN_005fb5c0 lines 388966-388980.\n * Format: while(readFlag()) { readString(value) }\n * Variable names are derived from index ($DemoValue_0, $DemoValue_1, etc.).\n */\n private readDemoValues(bs: BitStream): string[] {\n const values: string[] = [];\n while (bs.readFlag()) {\n values.push(bs.readString());\n }\n return values;\n }\n\n /**\n * Read Complex TargetManager from FUN_00670660.\n *\n * Phase 1: 4×U8 initial data\n * Phase 2: 32×32 grid — each cell: readFlag + if true: 4×U8\n * Phase 3: 512 target entries with conditional fields\n */\n private readComplexTargetManager(bs: BitStream): {\n sensorGroupColors: import(\"./types.js\").SensorGroupColor[];\n targets: TargetEntry[];\n } {\n // Phase 1: FUN_0043efe0 — read 4 bytes (4×U8)\n bs.readU8();\n bs.readU8();\n bs.readU8();\n bs.readU8();\n\n // Phase 2: 32×32 sensor group color grid (IFF colors).\n // sensorGroupColors[group][targetGroup] = RGBA determines how targetGroup\n // appears to group (e.g., red for enemy, green for friendly).\n const sensorGroupColors: import(\"./types.js\").SensorGroupColor[] = [];\n for (let group = 0; group < 32; group++) {\n for (let targetGroup = 0; targetGroup < 32; targetGroup++) {\n if (bs.readFlag()) {\n sensorGroupColors.push({\n group,\n targetGroup,\n r: bs.readU8(),\n g: bs.readU8(),\n b: bs.readU8(),\n a: bs.readU8(),\n });\n }\n }\n }\n\n // Phase 3: 512 target entries\n const targets: TargetEntry[] = [];\n for (let i = 0; i < 512; i++) {\n if (!bs.readFlag()) continue; // Target not active\n\n const entry: TargetEntry = {\n targetId: i,\n sensorGroup: 0,\n targetData: 0,\n damageLevel: 0,\n };\n\n // Conditional sensor data\n if (bs.readFlag()) {\n entry.sensorData = bs.readU32(); // F32 sensorData\n }\n // Conditional voice map data\n if (bs.readFlag()) {\n entry.voiceMapData = bs.readU32(); // F32 voiceMapData\n }\n // 5 conditional strings: name, skin, skinPref, voice, typeDescription\n if (bs.readFlag()) entry.name = bs.readString();\n if (bs.readFlag()) entry.skin = bs.readString();\n if (bs.readFlag()) entry.skinPref = bs.readString();\n if (bs.readFlag()) entry.voice = bs.readString();\n if (bs.readFlag()) entry.typeDescription = bs.readString();\n\n // Always-read fields\n entry.sensorGroup = bs.readInt(5); // team/type\n entry.targetData = bs.readInt(9); // target data\n\n // Targets >= 32 have additional DataBlock reference\n if (i >= 32) {\n if (bs.readFlag()) {\n entry.dataBlockRef = bs.readInt(11); // DataBlock reference (FUN_00436d10: readClassId)\n }\n // Virtual call notification — no bitstream I/O\n }\n\n // Damage level: readFloat(7) — always read for all active targets\n entry.damageLevel = bs.readFloat(7);\n\n targets.push(entry);\n }\n\n return { sensorGroupColors, targets };\n }\n\n /**\n * Read PathManager from FUN_00591ce0.\n * Decompiled format:\n * - U32 entryCount\n * - repeat entryCount:\n * - U32 entryId\n * - U32 recordCount\n * - repeat recordCount:\n * - U32 field0\n * - U32 field1\n * - U32 field2\n * - U32 auxField\n */\n private readPathManager(bs: BitStream): PathManagerEntry[] {\n const entries: PathManagerEntry[] = [];\n const entryCount = bs.readU32();\n for (let i = 0; i < entryCount; i++) {\n const entryId = bs.readU32();\n const recordCount = bs.readU32();\n const records: { field0: number; field1: number; field2: number; auxField: number }[] = [];\n for (let j = 0; j < recordCount; j++) {\n records.push({\n field0: bs.readU32(),\n field1: bs.readU32(),\n field2: bs.readU32(),\n auxField: bs.readU32(),\n });\n }\n entries.push({ entryId, records });\n }\n return entries;\n }\n\n /**\n * Read Simple TargetManager from FUN_006021b0.\n * Format: U8 flag + 4×U32 = 136 bits total.\n */\n private readSimpleTargetManager(bs: BitStream): void {\n bs.readU8(); // _read(1) = 8 bits\n bs.readU32(); // 4× _read(4)\n bs.readU32();\n bs.readU32();\n bs.readU32();\n }\n\n private readConnectionProtocol(bs: BitStream): ConnectionProtocolState {\n const lastSeqRecvdAtSend: number[] = [];\n for (let i = 0; i < 32; i++) {\n lastSeqRecvdAtSend.push(bs.readU32());\n }\n const lastSeqRecvd = bs.readU32();\n const highestAckedSeq = bs.readU32();\n const lastSendSeq = bs.readU32();\n const ackMask = bs.readU32();\n const connectSequence = bs.readU32();\n const lastRecvAckAck = bs.readU32();\n const connectionEstablished = bs.readBool();\n\n return {\n lastSeqRecvdAtSend,\n lastSeqRecvd,\n highestAckedSeq,\n lastSendSeq,\n ackMask,\n connectSequence,\n lastRecvAckAck,\n connectionEstablished,\n };\n }\n\n private readEventStartBlock(\n bs: BitStream\n ): { nextRecvEventSeq: number; events: NetEventInfo[] } {\n const nextRecvEventSeq = bs.readU32();\n const events: NetEventInfo[] = [];\n debugInitial(\"event block: nextRecvEventSeq=%d bit=%d\", nextRecvEventSeq, bs.getCurPos());\n while (bs.readFlag()) {\n const classId =\n bs.readInt(NetEventClassBitSize) + NetEventClassFirst;\n const dataBitsStart = bs.getCurPos();\n\n // Try to parse the event payload using the registry\n const parserEntry = this.registry.getEventParser(classId);\n let parsedData: Record<string, unknown> | undefined;\n\n if (parserEntry) {\n try {\n const conn = {\n compressionPoint: { x: 0, y: 0, z: 0 },\n ghostTracker: this.ghostTracker,\n getDataBlockParser: (cid: number) =>\n this.registry.getDataBlockParser(cid),\n };\n parsedData = parserEntry.unpack(bs, conn);\n } catch {\n // Can't parse — stop here\n events.push({\n classId,\n guaranteed: true,\n dataBitsStart,\n dataBitsEnd: dataBitsStart,\n });\n break;\n }\n } else {\n // No parser — can't advance past this event\n events.push({\n classId,\n guaranteed: true,\n dataBitsStart,\n dataBitsEnd: dataBitsStart,\n });\n break;\n }\n\n events.push({\n classId,\n guaranteed: true,\n dataBitsStart,\n dataBitsEnd: bs.getCurPos(),\n parsedData,\n });\n debugInitial(\" event classId=%d bits=%d\", classId, bs.getCurPos() - dataBitsStart);\n }\n return { nextRecvEventSeq, events };\n }\n\n private readGhostStartBlock(\n bs: BitStream,\n dataBlocks: Map<number, ParsedDataBlock>\n ): { ghostingSequence: number; ghosts: GhostUpdate[] } {\n const ghostingSequence = bs.readU32();\n const ghosts: GhostUpdate[] = [];\n debugInitial(\"ghost block: seq=%d bit=%d\", ghostingSequence, bs.getCurPos());\n const ghostCatalog = this.registry.getGhostCatalog();\n const totalBits = bs.getBuffer().length * 8;\n\n // Build DataBlock data lookup for ghost parsers that need it\n // (e.g., WheeledVehicle needs shape name to determine wheel count).\n const dataBlockDataMap = new Map<number, Record<string, unknown>>();\n for (const [objectId, db] of dataBlocks) {\n dataBlockDataMap.set(objectId, db.data);\n }\n\n while (bs.readFlag()) {\n if (bs.isError()) break;\n\n const index = bs.readInt(GhostIdBitSize);\n const classId =\n bs.readInt(NetObjectClassBitSize) + NetObjectClassFirst;\n const updateBitsStart = bs.getCurPos();\n\n // Build ordered list of parser candidates.\n // Registry binding (from deterministic classId) is preferred over\n // DataBlock-based identification because the classId is authoritative\n // while the DataBlock type may be a base class (e.g., StaticShapeData\n // used by a BeaconObject, which extends StaticShape with extra fields).\n const candidates: { entry: GhostParserEntry; method: string }[] = [];\n const seen = new Set<GhostParserEntry>();\n\n // Peek at DataBlock flag to identify ghost via DataBlock type\n const { entry: dbEntry } = this.identifyGhostViaDataBlock(bs, dataBlocks, ghostCatalog);\n\n // Candidate 1: registry binding (deterministic classId)\n const regEntry = this.registry.getGhostParser(classId);\n if (regEntry) {\n candidates.push({ entry: regEntry, method: \"registry\" });\n seen.add(regEntry);\n }\n\n // Candidate 2: DataBlock-based identification (fallback)\n if (dbEntry && !seen.has(dbEntry)) {\n candidates.push({ entry: dbEntry, method: \"datablock\" });\n seen.add(dbEntry);\n }\n\n // Try each candidate with alignment validation\n const connOverrides = {\n getDataBlockData: (objectId: number) => dataBlockDataMap.get(objectId),\n getDataBlockParser: (cid: number) => this.registry.getDataBlockParser(cid),\n };\n let parsed = false;\n for (const { entry, method } of candidates) {\n const isTrusted = method === \"registry\";\n const result = this.tryGhostParser(bs, entry, updateBitsStart, totalBits, false, connOverrides, isTrusted);\n if (result !== false) {\n this.ghostTracker.createGhost(index, classId, entry.name);\n debugInitial(\n \" ghost idx=%d classId=%d parser=%s bits=%d via=%s\",\n index, classId, entry.name, bs.getCurPos() - updateBitsStart, method\n );\n ghosts.push({\n index,\n type: \"create\",\n classId,\n updateBitsStart,\n updateBitsEnd: bs.getCurPos(),\n parsedData: result,\n });\n parsed = true;\n break;\n }\n }\n\n if (parsed) continue;\n\n // No candidate worked — stop parsing ghosts\n debugInitial(\n \" ghost idx=%d classId=%d NO PARSER (stopping at bit=%d, remaining=%d)\",\n index, classId, updateBitsStart, totalBits - updateBitsStart\n );\n break;\n }\n\n debugInitial(\n \"ghost loop ended at bit=%d remaining=%d count=%d\",\n bs.getCurPos(), totalBits - bs.getCurPos(), ghosts.length\n );\n return { ghostingSequence, ghosts };\n }\n\n /**\n * Try parsing a ghost with a given parser and validate alignment.\n * Returns true if parsing succeeded and alignment is valid.\n * On success, the BitStream is positioned after the parsed ghost data.\n * On failure, the BitStream is restored to updateBitsStart.\n */\n private tryGhostParser(\n bs: BitStream,\n entry: GhostParserEntry,\n updateBitsStart: number,\n totalBits: number,\n silent = false,\n connOverrides?: Partial<import(\"./ClassRegistry.js\").ConnectionContext>,\n trusted = false\n ): Record<string, unknown> | false {\n const savedPos = bs.savePos();\n if (!silent) {\n debugInitial(\" try %s: startBit=%d\", entry.name, updateBitsStart);\n }\n try {\n const parsedData = entry.unpackUpdate(bs, true, {\n compressionPoint: { x: 0, y: 0, z: 0 },\n ghostTracker: this.ghostTracker,\n ...connOverrides,\n });\n const bitsConsumed = bs.getCurPos() - updateBitsStart;\n const remaining = totalBits - bs.getCurPos();\n\n if (bs.isError() || (!trusted && bitsConsumed < 3)) {\n if (!silent) {\n debugInitial(\" reject %s: bits=%d isError=%s\", entry.name, bitsConsumed, bs.isError());\n }\n bs.restorePos(savedPos);\n return false;\n }\n\n // Validate alignment: if substantial data remains, the next\n // continuation flag must be 1 (more ghosts in the snapshot).\n if (remaining > 1000) {\n const peekPos = bs.getCurPos();\n const nextFlag = bs.readFlag();\n bs.setCurPos(peekPos);\n if (!nextFlag) {\n if (!silent) {\n debugInitial(\" reject %s: bits=%d misaligned (remaining=%d)\", entry.name, bitsConsumed, remaining);\n }\n bs.restorePos(savedPos);\n return false;\n }\n }\n\n return parsedData ?? {};\n } catch (e) {\n if (!silent) {\n debugInitial(\n \" reject %s: error at bit=%d: %s\",\n entry.name, bs.getCurPos(),\n e instanceof Error ? e.message : String(e)\n );\n }\n bs.restorePos(savedPos);\n return false;\n }\n }\n\n /**\n * Peek at the GameBase DataBlock prefix to identify a ghost's parser.\n * GameBase subclass ghost creates always start with:\n * flag(1b) + if flag: DataBlockId(11b)\n * The DataBlock type (e.g., \"PlayerData\") maps to the ghost parser\n * (e.g., \"Player\") by stripping the \"Data\" suffix.\n *\n * Returns { entry, dbFlag } where entry is the parser (if found) and\n * dbFlag indicates whether the first bit was 1 (DataBlock flag set).\n * In the initial block (mask=0xFFFFFFFF), dbFlag=false means the ghost\n * is definitely NOT a GameBase subclass.\n * The BitStream position is always restored after peeking.\n */\n private identifyGhostViaDataBlock(\n bs: BitStream,\n dataBlocks: Map<number, ParsedDataBlock> | undefined,\n ghostCatalog: Map<string, GhostParserEntry>\n ): { entry: GhostParserEntry | undefined; dbFlag: boolean } {\n if (!dataBlocks) return { entry: undefined, dbFlag: false };\n\n const savedPos = bs.savePos();\n let entry: GhostParserEntry | undefined;\n let dbFlag = false;\n\n try {\n dbFlag = bs.readFlag();\n if (dbFlag) {\n const dbId = bs.readInt(11);\n const db = dataBlocks.get(dbId);\n if (db) {\n const ghostName = db.className.replace(/Data$/, \"\");\n entry = ghostCatalog.get(ghostName);\n if (!entry) {\n debugInitial(\n \" identifyGhostViaDataBlock: dbId=%d className=%s ghostName=%s (no ghost parser)\",\n dbId, db.className, ghostName\n );\n }\n } else {\n debugInitial(\" identifyGhostViaDataBlock: dbId=%d (no DataBlock found)\", dbId);\n }\n } else {\n debugInitial(\" identifyGhostViaDataBlock: DataBlock flag=0\");\n }\n } catch {\n // Ignore errors during peek\n }\n\n bs.restorePos(savedPos);\n return { entry, dbFlag };\n }\n\n /**\n * Parse a raw 64-byte Move struct from a type 2 block.\n *\n * Layout (all little-endian):\n * S32 px, py, pz (12 bytes, offsets 0-11)\n * U32 pyaw, ppitch, proll (12 bytes, offsets 12-23)\n * F32 x, y, z (12 bytes, offsets 24-35)\n * F32 yaw, pitch, roll (12 bytes, offsets 36-47)\n * U32 id (4 bytes, offset 48)\n * U32 sendCount (4 bytes, offset 52)\n * bool freeLook (1 byte, offset 56)\n * bool trigger[6] (6 bytes, offsets 57-62)\n * padding (1 byte, offset 63)\n */\n private readRawMove(data: Uint8Array): Move {\n const dv = new DataView(data.buffer, data.byteOffset, data.byteLength);\n const px = dv.getInt32(0, true);\n const py = dv.getInt32(4, true);\n const pz = dv.getInt32(8, true);\n const pyaw = dv.getUint32(12, true);\n const ppitch = dv.getUint32(16, true);\n const proll = dv.getUint32(20, true);\n const x = dv.getFloat32(24, true);\n const y = dv.getFloat32(28, true);\n const z = dv.getFloat32(32, true);\n const yaw = dv.getFloat32(36, true);\n const pitch = dv.getFloat32(40, true);\n const roll = dv.getFloat32(44, true);\n const id = dv.getUint32(48, true);\n const sendCount = dv.getUint32(52, true);\n const freeLook = data[56] !== 0;\n const trigger: boolean[] = [];\n for (let i = 0; i < MaxTriggerKeys; i++) {\n trigger.push(data[57 + i] !== 0);\n }\n\n return {\n px, py, pz, pyaw, ppitch, proll,\n x, y, z, yaw, pitch, roll,\n id, sendCount, freeLook, trigger,\n };\n }\n\n /**\n * Parse an 8-byte info block (type 3).\n * Contains U32 + F32 (observed: always 1 + 120.0).\n */\n private readInfoBlock(data: Uint8Array): InfoBlock {\n const dv = new DataView(data.buffer, data.byteOffset, data.byteLength);\n return {\n value1: dv.getUint32(0, true),\n value2: dv.getFloat32(4, true),\n };\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DemoParser.test.js","sourceRoot":"","sources":["../src/DemoParser.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DemoParser.test.js","sourceRoot":"","sources":["../src/DemoParser.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { describe, it, expect } from \"vitest\";\nimport * as fs from \"fs\";\nimport * as path from \"path\";\nimport { DemoParser } from \"./DemoParser.js\";\nimport {\n BlockTypePacket,\n BlockTypeMove,\n BlockTypeInfo,\n} from \"./types.js\";\nimport type { PacketData } from \"./types.js\";\n\n/**\n * Integration tests that parse real demo files and verify zero failures.\n * These are the primary regression tests — any parser change that causes\n * ghost failures, tracker divergences, or incorrect counts will be caught.\n */\n\nconst DEMO_DIR = path.resolve(import.meta.dirname, \"..\", \"data\");\n\n/** Demo files with expected parse metrics. */\nconst DEMOS = [\n {\n file: \"exogen_Harvester.rec\",\n minPackets: 28000,\n minGhostCreates: 17000,\n minGhostUpdates: 520000,\n },\n {\n file: \"uploads_7_2025-04-26_21-30_Tacocat_CTFGame_MisadventureV2.rec\",\n minPackets: 58000,\n minGhostCreates: 23000,\n minGhostUpdates: 1100000,\n },\n {\n file: \"uploads_4_6_15_24_Massive_DannoProCaptain.rec\",\n minPackets: 30000,\n minGhostCreates: 18000,\n minGhostUpdates: 580000,\n },\n {\n file: \"uploads_6_SterIO_2025_LT_Pub_SH.rec\",\n minPackets: 58000,\n minGhostCreates: 16000,\n minGhostUpdates: 1200000,\n },\n {\n file: \"uploads_6_SterIO_2025_TeamNev_vs_TeamBlake_WoodyMyrk.rec\",\n minPackets: 21000,\n minGhostCreates: 11000,\n minGhostUpdates: 380000,\n },\n {\n file: \"uploads_8_MapFour3-1.rec\",\n minPackets: 34000,\n minGhostCreates: 16000,\n minGhostUpdates: 710000,\n },\n {\n file: \"auto-capture_2025-12-03_01-52_DemoBot-Mia_CTFGame_El_FinLT.rec\",\n minPackets: 51000,\n minGhostCreates: 5000,\n minGhostUpdates: 450000,\n },\n];\n\nfunction demoExists(file: string): boolean {\n return fs.existsSync(path.join(DEMO_DIR, file));\n}\n\nasync function parseDemoFile(file: string) {\n const buf = fs.readFileSync(path.join(DEMO_DIR, file));\n const parser = new DemoParser(buf);\n const result = await parser.parseFullDemo();\n return { parser, result, pp: parser.getPacketParser() };\n}\n\ndescribe(\"DemoParser integration\", () => {\n for (const demo of DEMOS) {\n const shortName = demo.file\n .replace(/^uploads_\\d+_/, \"\")\n .replace(/\\.rec$/, \"\");\n\n it(`${shortName}: 0 failures, 0 divergences`, { timeout: 60_000, skip: !demoExists(demo.file) }, async () => {\n const { result, pp } = await parseDemoFile(demo.file);\n\n // Zero tolerance for failures\n expect(pp.ghostsFailed).toBe(0);\n expect(pp.ghostsTrackerDiverged).toBe(0);\n\n // Sanity: verify we actually parsed a meaningful amount of data\n expect(pp.packetsParsed).toBeGreaterThanOrEqual(demo.minPackets);\n expect(pp.ghostCreatesParsed).toBeGreaterThanOrEqual(\n demo.minGhostCreates\n );\n expect(pp.ghostUpdatesParsed).toBeGreaterThanOrEqual(\n demo.minGhostUpdates\n );\n\n // Header sanity\n expect(result.header.identString).toBe(\"Tribes2 Recording\");\n expect(result.header.protocolVersion).toBe(0x330004);\n\n // Blocks exist\n expect(result.blocks.length).toBeGreaterThan(0);\n });\n }\n});\n\ndescribe(\"DemoParser structure\", () => {\n const demoFile = \"exogen_Harvester.rec\";\n const skip = !demoExists(demoFile);\n\n it(\"parses header correctly\", { skip, timeout: 30_000 }, async () => {\n const { result } = await parseDemoFile(demoFile);\n\n expect(result.header.identString).toBe(\"Tribes2 Recording\");\n expect(result.header.protocolVersion).toBe(0x330004);\n expect(result.header.demoLengthMs).toBeGreaterThan(0);\n });\n\n it(\"parses initial block with DataBlocks\", { skip, timeout: 30_000 }, async () => {\n const { result } = await parseDemoFile(demoFile);\n\n expect(result.initialBlock).toBeDefined();\n expect(result.initialBlock!.dataBlocks.size).toBeGreaterThan(0);\n });\n\n it(\"parses initial ghosts\", { skip, timeout: 30_000 }, async () => {\n const { result } = await parseDemoFile(demoFile);\n\n expect(result.initialBlock!.initialGhosts).toBeDefined();\n expect(result.initialBlock!.initialGhosts!.length).toBeGreaterThan(0);\n });\n\n it(\"exposes registry with correct binding counts\", { skip, timeout: 30_000 }, async () => {\n const { parser } = await parseDemoFile(demoFile);\n\n const reg = parser.getRegistry();\n const ghostBindings = reg.getGhostBindings();\n const eventBindings = reg.getEventBindings();\n\n // 53 ghost classes, 26 event classes\n expect(ghostBindings.size).toBe(53);\n expect(eventBindings.size).toBe(26);\n });\n\n it(\"WheeledVehicle always reads braking/wheels (regression)\", { timeout: 60_000, skip: !demoExists(\"uploads_7_2025-04-26_21-30_Tacocat_CTFGame_MisadventureV2.rec\") }, async () => {\n // The Tacocat demo previously had 32 ghost failures from WV misparse\n const { pp } = await parseDemoFile(\n \"uploads_7_2025-04-26_21-30_Tacocat_CTFGame_MisadventureV2.rec\"\n );\n expect(pp.ghostsFailed).toBe(0);\n expect(pp.ghostsTrackerDiverged).toBe(0);\n });\n});\n\ndescribe(\"DemoParser stepping API\", () => {\n const demoFile = \"exogen_Harvester.rec\";\n const skip = !demoExists(demoFile);\n\n function loadDemo() {\n const buf = fs.readFileSync(path.join(DEMO_DIR, demoFile));\n return new DemoParser(buf);\n }\n\n it(\"getters before load() throw, loaded returns false\", { skip }, () => {\n const parser = loadDemo();\n expect(parser.loaded).toBe(false);\n expect(() => parser.header).toThrow(\"must call load() first\");\n expect(() => parser.initialBlock).toThrow(\"must call load() first\");\n expect(() => parser.blockCount).toThrow(\"must call load() first\");\n expect(() => parser.blockCursor).toThrow(\"must call load() first\");\n });\n\n it(\"nextBlock() throws before load()\", { skip }, () => {\n const parser = loadDemo();\n expect(() => parser.nextBlock()).toThrow(\"must call load() first\");\n });\n\n it(\"reset() throws before load()\", { skip }, () => {\n const parser = loadDemo();\n expect(() => parser.reset()).toThrow(\"must call load() first\");\n });\n\n it(\"load() returns header/initialBlock with valid data\", { skip, timeout: 30_000 }, async () => {\n const parser = loadDemo();\n const result = await parser.load();\n\n expect(result.header.identString).toBe(\"Tribes2 Recording\");\n expect(result.header.protocolVersion).toBe(0x330004);\n expect(result.header.demoLengthMs).toBeGreaterThan(0);\n expect(result.initialBlock.dataBlocks.size).toBeGreaterThan(0);\n expect(result.initialBlock.initialGhosts.length).toBeGreaterThan(0);\n expect(result.initialBlock.missionName.length).toBeGreaterThan(0);\n });\n\n it(\"load() is idempotent\", { skip, timeout: 30_000 }, async () => {\n const parser = loadDemo();\n const result1 = await parser.load();\n const result2 = await parser.load();\n\n expect(result2.header).toBe(result1.header);\n expect(result2.initialBlock).toBe(result1.initialBlock);\n });\n\n it(\"load() populates getters\", { skip, timeout: 30_000 }, async () => {\n const parser = loadDemo();\n await parser.load();\n\n expect(parser.loaded).toBe(true);\n expect(parser.header.identString).toBe(\"Tribes2 Recording\");\n expect(parser.initialBlock.dataBlocks.size).toBeGreaterThan(0);\n expect(parser.blockCount).toBeGreaterThan(0);\n expect(parser.blockCursor).toBe(0);\n });\n\n it(\"nextBlock() returns blocks sequentially and advances cursor\", { skip, timeout: 30_000 }, async () => {\n const parser = loadDemo();\n await parser.load();\n\n const block0 = parser.nextBlock();\n expect(block0).toBeDefined();\n expect(block0!.index).toBe(0);\n expect(parser.blockCursor).toBe(1);\n\n const block1 = parser.nextBlock();\n expect(block1).toBeDefined();\n expect(block1!.index).toBe(1);\n expect(parser.blockCursor).toBe(2);\n });\n\n it(\"nextBlock() parses blocks with correct types\", { skip, timeout: 60_000 }, async () => {\n const parser = loadDemo();\n await parser.load();\n\n let packets = 0;\n let moves = 0;\n let infos = 0;\n let block: ReturnType<typeof parser.nextBlock>;\n while ((block = parser.nextBlock())) {\n if (block.type === BlockTypePacket && block.parsed) packets++;\n if (block.type === BlockTypeMove && block.parsed) moves++;\n if (block.type === BlockTypeInfo && block.parsed) infos++;\n }\n\n expect(packets).toBeGreaterThan(0);\n expect(moves).toBeGreaterThan(0);\n expect(infos).toBeGreaterThan(0);\n });\n\n it(\"nextBlock() returns undefined when exhausted\", { skip, timeout: 60_000 }, async () => {\n const parser = loadDemo();\n await parser.load();\n\n while (parser.nextBlock()) {}\n\n expect(parser.nextBlock()).toBeUndefined();\n expect(parser.blockCursor).toBe(parser.blockCount);\n });\n\n it(\"reset() resets cursor and produces identical stats on replay\", { skip, timeout: 120_000 }, async () => {\n const parser = loadDemo();\n await parser.load();\n\n // First pass\n while (parser.nextBlock()) {}\n const pp1 = parser.getPacketParser();\n const stats1 = {\n packetsParsed: pp1.packetsParsed,\n ghostCreatesParsed: pp1.ghostCreatesParsed,\n ghostUpdatesParsed: pp1.ghostUpdatesParsed,\n ghostDeletes: pp1.ghostDeletes,\n ghostsFailed: pp1.ghostsFailed,\n ghostsTrackerDiverged: pp1.ghostsTrackerDiverged,\n eventsParsed: pp1.eventsParsed,\n controlObjectParsed: pp1.controlObjectParsed,\n };\n\n // Reset and replay\n parser.reset();\n expect(parser.blockCursor).toBe(0);\n\n while (parser.nextBlock()) {}\n const pp2 = parser.getPacketParser();\n const stats2 = {\n packetsParsed: pp2.packetsParsed,\n ghostCreatesParsed: pp2.ghostCreatesParsed,\n ghostUpdatesParsed: pp2.ghostUpdatesParsed,\n ghostDeletes: pp2.ghostDeletes,\n ghostsFailed: pp2.ghostsFailed,\n ghostsTrackerDiverged: pp2.ghostsTrackerDiverged,\n eventsParsed: pp2.eventsParsed,\n controlObjectParsed: pp2.controlObjectParsed,\n };\n\n expect(stats2).toEqual(stats1);\n });\n\n it(\"stepping produces same stats as parseFullDemo()\", { skip, timeout: 120_000 }, async () => {\n // Parse with parseFullDemo\n const buf = fs.readFileSync(path.join(DEMO_DIR, demoFile));\n const fullParser = new DemoParser(buf);\n await fullParser.parseFullDemo();\n const fullPP = fullParser.getPacketParser();\n const fullStats = {\n packetsParsed: fullPP.packetsParsed,\n ghostCreatesParsed: fullPP.ghostCreatesParsed,\n ghostUpdatesParsed: fullPP.ghostUpdatesParsed,\n ghostDeletes: fullPP.ghostDeletes,\n ghostsFailed: fullPP.ghostsFailed,\n ghostsTrackerDiverged: fullPP.ghostsTrackerDiverged,\n eventsParsed: fullPP.eventsParsed,\n controlObjectParsed: fullPP.controlObjectParsed,\n };\n\n // Parse with stepping API\n const stepParser = new DemoParser(buf);\n await stepParser.load();\n while (stepParser.nextBlock()) {}\n const stepPP = stepParser.getPacketParser();\n const stepStats = {\n packetsParsed: stepPP.packetsParsed,\n ghostCreatesParsed: stepPP.ghostCreatesParsed,\n ghostUpdatesParsed: stepPP.ghostUpdatesParsed,\n ghostDeletes: stepPP.ghostDeletes,\n ghostsFailed: stepPP.ghostsFailed,\n ghostsTrackerDiverged: stepPP.ghostsTrackerDiverged,\n eventsParsed: stepPP.eventsParsed,\n controlObjectParsed: stepPP.controlObjectParsed,\n };\n\n expect(stepStats).toEqual(fullStats);\n });\n\n it(\"parseFullDemo() backward compat: sets loaded state\", { skip, timeout: 30_000 }, async () => {\n const parser = loadDemo();\n await parser.parseFullDemo();\n\n expect(parser.loaded).toBe(true);\n expect(parser.blockCursor).toBe(parser.blockCount);\n expect(parser.nextBlock()).toBeUndefined();\n });\n\n it(\"processBlocks() fast-forwards correct count\", { skip, timeout: 60_000 }, async () => {\n const parser = loadDemo();\n await parser.load();\n\n const processed = parser.processBlocks(100);\n expect(processed).toBe(100);\n expect(parser.blockCursor).toBe(100);\n\n // Drain the rest\n while (parser.nextBlock()) {}\n\n // processBlocks returns 0 when exhausted\n expect(parser.processBlocks(10)).toBe(0);\n });\n\n it(\"processBlocks() produces same stats as nextBlock() drain\", { skip, timeout: 120_000 }, async () => {\n const buf = fs.readFileSync(path.join(DEMO_DIR, demoFile));\n\n // Drain with nextBlock\n const parser1 = new DemoParser(buf);\n await parser1.load();\n while (parser1.nextBlock()) {}\n const pp1 = parser1.getPacketParser();\n const stats1 = {\n packetsParsed: pp1.packetsParsed,\n ghostCreatesParsed: pp1.ghostCreatesParsed,\n ghostUpdatesParsed: pp1.ghostUpdatesParsed,\n ghostsFailed: pp1.ghostsFailed,\n };\n\n // Drain with processBlocks\n const parser2 = new DemoParser(buf);\n await parser2.load();\n parser2.processBlocks(Infinity);\n const pp2 = parser2.getPacketParser();\n const stats2 = {\n packetsParsed: pp2.packetsParsed,\n ghostCreatesParsed: pp2.ghostCreatesParsed,\n ghostUpdatesParsed: pp2.ghostUpdatesParsed,\n ghostsFailed: pp2.ghostsFailed,\n };\n\n expect(stats2).toEqual(stats1);\n });\n});\n\ndescribe(\"DemoParser data exposure\", () => {\n const demoFile = \"exogen_Harvester.rec\";\n const demoWithEvents = \"uploads_6_SterIO_2025_LT_Pub_SH.rec\";\n const skipDemo = !demoExists(demoFile);\n const skipEvents = !demoExists(demoWithEvents);\n\n it(\"initial block exposes sensorGroupColors\", { skip: skipDemo, timeout: 30_000 }, async () => {\n const { result } = await parseDemoFile(demoFile);\n const colors = result.initialBlock.sensorGroupColors;\n\n expect(colors).toBeDefined();\n expect(Array.isArray(colors)).toBe(true);\n // demo022 has 5 sensor group color entries (2 teams + default)\n expect(colors.length).toBeGreaterThan(0);\n\n // Each entry has proper structure\n for (const c of colors) {\n expect(c).toHaveProperty(\"group\");\n expect(c).toHaveProperty(\"targetGroup\");\n expect(c.r).toBeGreaterThanOrEqual(0);\n expect(c.r).toBeLessThanOrEqual(255);\n expect(c.g).toBeGreaterThanOrEqual(0);\n expect(c.g).toBeLessThanOrEqual(255);\n expect(c.b).toBeGreaterThanOrEqual(0);\n expect(c.b).toBeLessThanOrEqual(255);\n expect(c.a).toBeGreaterThanOrEqual(0);\n expect(c.a).toBeLessThanOrEqual(255);\n }\n\n // Friendly self-color is green\n const greenEntries = colors.filter(\n (c) => c.r === 0 && c.g === 255 && c.b === 0\n );\n expect(greenEntries.length).toBeGreaterThan(0);\n });\n\n it(\"initial block exposes pathManager\", { skip: skipDemo, timeout: 30_000 }, async () => {\n const { result } = await parseDemoFile(demoFile);\n const pm = result.initialBlock.pathManager;\n\n expect(pm).toBeDefined();\n expect(Array.isArray(pm)).toBe(true);\n // pathManager may be empty for some maps, but the field must exist\n for (const entry of pm) {\n expect(entry).toHaveProperty(\"entryId\");\n expect(entry).toHaveProperty(\"records\");\n expect(Array.isArray(entry.records)).toBe(true);\n }\n });\n\n it(\"packets expose targetVisibility when present\", { skip: skipDemo, timeout: 60_000 }, async () => {\n const { result } = await parseDemoFile(demoFile);\n let found = 0;\n for (const block of result.blocks) {\n if (block.type !== BlockTypePacket || !block.parsed) continue;\n const pkt = block.parsed as PacketData;\n if (pkt.gameState.targetVisibility) {\n found++;\n for (const tv of pkt.gameState.targetVisibility) {\n expect(typeof tv.index).toBe(\"number\");\n expect(tv.index).toBeGreaterThanOrEqual(0);\n expect(tv.index).toBeLessThan(16);\n expect(typeof tv.mask).toBe(\"number\");\n }\n }\n }\n // targetVisibility is sent in most game packets\n expect(found).toBeGreaterThan(0);\n });\n\n it(\"SensorGroupColorEvent parsed in packet stream\", { skip: skipEvents, timeout: 60_000 }, async () => {\n const { result } = await parseDemoFile(demoWithEvents);\n let sgColorCount = 0;\n let setSgCount = 0;\n for (const block of result.blocks) {\n if (block.type !== BlockTypePacket || !block.parsed) continue;\n const pkt = block.parsed as PacketData;\n for (const evt of pkt.events) {\n if (evt.parsedData?.type === \"SensorGroupColorEvent\") {\n sgColorCount++;\n expect(evt.parsedData.sensorGroup).toBeDefined();\n expect(evt.parsedData.colors).toBeDefined();\n }\n if (evt.parsedData?.type === \"SetSensorGroupEvent\") {\n setSgCount++;\n expect(typeof evt.parsedData.sensorGroup).toBe(\"number\");\n }\n }\n }\n expect(sgColorCount).toBeGreaterThan(0);\n expect(setSgCount).toBeGreaterThan(0);\n });\n\n it(\"GravityEvent returns float value\", { skip: skipEvents, timeout: 60_000 }, async () => {\n // Check that GravityEvent gravity field, if present, is a float not an integer bit pattern\n const { result } = await parseDemoFile(demoWithEvents);\n for (const block of result.blocks) {\n if (block.type !== BlockTypePacket || !block.parsed) continue;\n const pkt = block.parsed as PacketData;\n for (const evt of pkt.events) {\n if (evt.parsedData?.type === \"GravityEvent\") {\n const g = evt.parsedData.gravity as number;\n // Gravity is a physical constant, typically -20 to -33 in Tribes 2\n // A U32 misread would give ~3.2 billion\n expect(Math.abs(g)).toBeLessThan(1000);\n }\n }\n }\n });\n});\n\ndescribe(\"CloakMask field names (binary-verified)\", () => {\n const demoFile = \"exogen_Harvester.rec\";\n const skip = !demoExists(demoFile);\n\n it(\"CloakMask uses correct field names and types\", { skip, timeout: 60_000 }, async () => {\n const { result } = await parseDemoFile(demoFile);\n\n // Collect all ghost data with CloakMask fields across the full demo.\n let withCloaked = 0;\n let withFadeVal = 0;\n let withFading = 0;\n let withFadeTime = 0;\n\n function checkGhosts(ghosts: { parsedData?: Record<string, unknown> }[]) {\n for (const ghost of ghosts) {\n const d = ghost.parsedData;\n if (!d) continue;\n // Old field names must be absent.\n expect(d.stateAEnabled).toBeUndefined();\n expect(d.stateB).toBeUndefined();\n expect(d.hasInvulnerability).toBeUndefined();\n expect(d.invulnerabilityVisual).toBeUndefined();\n expect(d.invulnerabilityTicks).toBeUndefined();\n expect(d.binaryCloak).toBeUndefined();\n\n if (typeof d.cloaked === \"boolean\") withCloaked++;\n if (typeof d.fadeVal === \"boolean\") withFadeVal++;\n if (typeof d.fading === \"boolean\") withFading++;\n if (typeof d.fadeTime === \"number\") {\n withFadeTime++;\n // fadeTime is F32 (seconds), not U32. A misread U32 would give\n // values in the millions; valid fade durations are 0–few seconds.\n expect(d.fadeTime as number).toBeGreaterThanOrEqual(0);\n expect(d.fadeTime as number).toBeLessThan(60);\n }\n }\n }\n\n checkGhosts(result.initialBlock!.initialGhosts);\n for (const block of result.blocks) {\n if (block.type !== BlockTypePacket || !block.parsed) continue;\n checkGhosts((block.parsed as PacketData).ghosts);\n }\n\n // Sanity: CloakMask data should appear in a real demo.\n expect(withCloaked).toBeGreaterThan(0);\n expect(withFadeVal).toBeGreaterThan(0);\n expect(withFading).toBeGreaterThanOrEqual(0); // fading may not occur in every demo\n });\n});\n"]}
|
package/dist/EventParsers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventParsers.js","sourceRoot":"","sources":["../src/EventParsers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EventParsers.js","sourceRoot":"","sources":["../src/EventParsers.ts"],"names":[],"mappings":"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","sourcesContent":["import type { BitStream } from \"./BitStream.js\";\nimport type { ClassRegistry, ConnectionContext } from \"./ClassRegistry.js\";\nimport type {\n SimDataBlockEventData,\n NetStringEventData,\n Sim2DAudioEventData,\n Sim3DAudioEventData,\n SetSensorGroupEventData,\n SetServerTargetEventData,\n TargetToEventData,\n SetObjectActiveImageEventData,\n SetMissionCRCEventData,\n RemoteCommandEventData,\n TargetInfoEventData,\n TargetFreeEventData,\n SimTargetAudioEventData,\n SensorGroupColorEventData,\n SensorGroupColorEntry,\n ResetClientTargetsEventData,\n RemoveClientTargetTypeEventData,\n SimVoiceStreamEventData,\n GhostingMessageEventData,\n GhostAlwaysObjectEventData,\n PathManagerEventData,\n PathData,\n PathPoint,\n LightningStrikeEventData,\n FileChunkEventData,\n DownloadMessageEventData,\n FileDownloadRequestEventData,\n SimpleMessageEventData,\n CRCChallengeEventData,\n CRCChallengeResponseEventData,\n GravityEventData,\n FogChallengeEventData,\n} from \"./eventDataTypes.js\";\nimport {\n DataBlockClassFirst,\n SimDBEventObjectIdBits,\n SimDBEventClassIdBits,\n SimDBEventIndexBits,\n SimDBEventTotalBits,\n} from \"./types.js\";\n\n// ============================================================\n// SimDataBlockEvent — DataBlock definition sent during gameplay\n// ============================================================\n\nfunction simDataBlockEventUnpack(\n bs: BitStream,\n conn: ConnectionContext\n): SimDataBlockEventData {\n // Decompiled source of truth:\n // FUN_005ffc90 reads:\n // mProcess flag + readClassId() + readInt(7) + readInt(11) + readInt(12)\n // This matches the on-wire format written by FUN_005ffbc0.\n const mProcess = bs.readFlag();\n if (!mProcess) {\n return {\n type: \"SimDataBlockEvent\",\n mProcess: false,\n };\n }\n\n const id = bs.readInt(SimDBEventObjectIdBits) + 0;\n const classId = bs.readInt(SimDBEventClassIdBits) + DataBlockClassFirst;\n const index = bs.readInt(SimDBEventIndexBits);\n const total = bs.readInt(SimDBEventTotalBits);\n\n const result: SimDataBlockEventData = {\n type: \"SimDataBlockEvent\",\n mProcess: true,\n objectId: id,\n classId,\n index,\n total,\n _payloadBitPos: bs.getCurPos(),\n };\n\n // Try to parse the DataBlock payload if we have a parser.\n // String buffer is already enabled by parsePacket() for the entire packet —\n // do NOT toggle it here, as that would reset accumulated prefix context and\n // then disable string buffer for the rest of the packet's events and ghosts.\n const parser = conn.getDataBlockParser?.(classId);\n if (parser) {\n try {\n result.dataBlockData = parser.unpackData(bs);\n result.dataBlockClassName = parser.name;\n } catch {\n result._needsClassParser = true;\n }\n } else {\n result._needsClassParser = true;\n }\n\n return result;\n}\n\n// ============================================================\n// NetStringEvent — string table update\n// ============================================================\n\nfunction netStringEventUnpack(\n bs: BitStream,\n _conn: ConnectionContext\n): NetStringEventData {\n // Tribes2.exe source of truth (FUN_00589b60):\n // - id: readInt(10)\n // - hasValue: readFlag()\n // - if hasValue: readString() via BitStream::readString(..., 0xff)\n const id = bs.readInt(10);\n const hasValue = bs.readFlag();\n const value = hasValue ? bs.readString() : undefined;\n return { type: \"NetStringEvent\", id, hasValue, value };\n}\n\n// ============================================================\n// Sim2DAudioEvent — 2D audio playback\n// ============================================================\n\nfunction sim2DAudioEventUnpack(\n bs: BitStream,\n _conn: ConnectionContext\n): Sim2DAudioEventData {\n // Binary FUN_005fff40: FUN_00436d10(bs) = readInt(11) for DataBlock object ref.\n // No +3 offset — object IDs here use the same numbering as ghost dataBlockId\n // references and SimDataBlockEvent.objectId (all keyed by raw readInt(11)).\n const id = bs.readInt(11);\n return { type: \"Sim2DAudioEvent\", profileId: id };\n}\n\n// ============================================================\n// Sim3DAudioEvent — 3D positional audio\n// ============================================================\n\nfunction sim3DAudioEventUnpack(\n bs: BitStream,\n conn: ConnectionContext\n): Sim3DAudioEventData {\n // Binary FUN_006000f0: FUN_00436d10(bs) = readInt(11) for DataBlock object ref.\n // No +3 offset — same numbering as ghost dataBlockId and SimDataBlockEvent.\n const id = bs.readInt(11);\n let rotation: Sim3DAudioEventData[\"rotation\"];\n if (bs.readFlag()) {\n // Has cone params — read quaternion\n const qx = bs.readFloat(8);\n const qy = bs.readFloat(8);\n const qz = bs.readFloat(8);\n let qw = Math.sqrt(Math.max(0, 1.0 - (qx * qx + qy * qy + qz * qz)));\n if (bs.readFlag()) qw = -qw;\n rotation = { x: qx, y: qy, z: qz, w: qw };\n }\n // Read compressed position\n const position = bs.readCompressedPoint(conn.compressionPoint, 0.5);\n return { type: \"Sim3DAudioEvent\", profileId: id, rotation, position };\n}\n\n// ============================================================\n// SetSensorGroupEvent\n// ============================================================\n\nfunction setSensorGroupEventUnpack(\n bs: BitStream,\n _conn: ConnectionContext\n): SetSensorGroupEventData {\n return { type: \"SetSensorGroupEvent\", sensorGroup: bs.readInt(5) };\n}\n\n// ============================================================\n// SetServerTargetEvent\n// ============================================================\n\nfunction setServerTargetEventUnpack(\n bs: BitStream,\n _conn: ConnectionContext\n): SetServerTargetEventData {\n const targetId = bs.readFlag() ? bs.readInt(9) : undefined; // TargetIdBitSize=9\n const targetPos = { x: bs.readF32(), y: bs.readF32(), z: bs.readF32() };\n const result: SetServerTargetEventData = {\n type: \"SetServerTargetEvent\",\n targetPos,\n };\n if (targetId !== undefined) result.targetId = targetId;\n return result;\n}\n\n// ============================================================\n// TargetToEvent — waypoint/command targeting\n// ============================================================\n\nfunction targetToEventUnpack(\n bs: BitStream,\n _conn: ConnectionContext\n): TargetToEventData {\n const targetId = bs.readFlag() ? bs.readInt(9) : undefined;\n const targetPos = bs.readFlag()\n ? { x: bs.readF32(), y: bs.readF32(), z: bs.readF32() }\n : undefined;\n const result: TargetToEventData = {\n type: \"TargetToEvent\",\n assign: false, // placeholder, overwritten below\n };\n if (targetId !== undefined) result.targetId = targetId;\n if (targetPos) result.targetPos = targetPos;\n result.assign = bs.readFlag();\n return result;\n}\n\n// ============================================================\n// SetObjectActiveImageEvent\n// ============================================================\n\nfunction setObjectActiveImageEventUnpack(\n bs: BitStream,\n _conn: ConnectionContext\n): SetObjectActiveImageEventData {\n const objectId = bs.readRangedU32(0, 1023); // MaxGhostCount-1\n const imageSlot = bs.readRangedU32(0, 8); // MaxMountedImages\n return { type: \"SetObjectActiveImageEvent\", objectId, imageSlot };\n}\n\n// ============================================================\n// SetMissionCRCEvent\n// ============================================================\n\nfunction setMissionCRCEventUnpack(\n bs: BitStream,\n _conn: ConnectionContext\n): SetMissionCRCEventData {\n return { type: \"SetMissionCRCEvent\", crc: bs.readU32() };\n}\n\n// ============================================================\n// RemoteCommandEvent — script console command\n// ============================================================\n\nfunction remoteCommandEventUnpack(\n bs: BitStream,\n _conn: ConnectionContext\n): RemoteCommandEventData {\n // Decompiled Tribes 2 binary source of truth:\n // pack: FUN_005bfd40 writes argc(5 bits), then argc×FUN_00588530\n // unpack: FUN_005bfda0 reads argc(5 bits), then argc×FUN_00588690\n const argc = bs.readInt(5);\n const argv: string[] = [];\n for (let i = 0; i < argc; i++) {\n argv.push(bs.unpackNetString());\n }\n return {\n type: \"RemoteCommandEvent\",\n argc,\n argv,\n funcName: argv[0] ?? \"\",\n args: argv.slice(1),\n };\n}\n\n// ============================================================\n// TargetInfoEvent — target metadata synchronization\n// ============================================================\n\nfunction targetInfoEventUnpack(\n bs: BitStream,\n _conn: ConnectionContext\n): TargetInfoEventData {\n // Decompiled Tribes2.exe source of truth (FUN_006735b0):\n // - targetId: readInt(9)\n // - tag fields: outer presence flag; inner non-empty flag; if non-empty readInt(10), else sentinel 0x400\n // - sensorGroup: optional readInt(5)\n // - dataBlock: outer presence flag; inner valid flag; if valid readInt(11), else sentinel -2\n // - renderFlags: optional readInt(9)\n // - voicePitch: optional readFloat(7) * 1.5 + 0.5\n const result: TargetInfoEventData = {\n type: \"TargetInfoEvent\",\n targetId: bs.readInt(9), // TargetIdBitSize=9\n };\n\n if (bs.readFlag()) {\n result.nameTag = bs.readFlag() ? bs.readInt(10) : 0x400;\n }\n if (bs.readFlag()) {\n result.skinTag = bs.readFlag() ? bs.readInt(10) : 0x400;\n }\n if (bs.readFlag()) {\n result.skinPrefTag = bs.readFlag() ? bs.readInt(10) : 0x400;\n }\n if (bs.readFlag()) {\n result.voiceTag = bs.readFlag() ? bs.readInt(10) : 0x400;\n }\n if (bs.readFlag()) {\n result.typeTag = bs.readFlag() ? bs.readInt(10) : 0x400;\n }\n if (bs.readFlag()) {\n result.sensorGroup = bs.readInt(5);\n }\n if (bs.readFlag()) {\n result.dataBlockId = bs.readFlag() ? bs.readInt(11) : -2;\n }\n if (bs.readFlag()) {\n result.renderFlags = bs.readInt(9); // NumRenderBits=9\n }\n if (bs.readFlag()) {\n const raw = bs.readFloat(7);\n result.voicePitch = raw * 1.5 + 0.5;\n }\n\n return result;\n}\n\n// ============================================================\n// TargetFreeEvent — target cleanup notification\n// ============================================================\n\nfunction targetFreeEventUnpack(\n bs: BitStream,\n _conn: ConnectionContext\n): TargetFreeEventData {\n return { type: \"TargetFreeEvent\", targetId: bs.readInt(9) };\n}\n\n// ============================================================\n// SimTargetAudioEvent — target-specific audio\n// ============================================================\n\nfunction simTargetAudioEventUnpack(\n bs: BitStream,\n conn: ConnectionContext\n): SimTargetAudioEventData {\n const result: SimTargetAudioEventData = {\n type: \"SimTargetAudioEvent\",\n targetId: bs.readInt(9),\n fileTag: bs.readInt(12),\n descriptionId: bs.readRangedU32(3, 1026),\n updateSound: false,\n };\n if (bs.readFlag()) {\n result.position = bs.readCompressedPoint(conn.compressionPoint, 0.5);\n }\n result.updateSound = bs.readFlag();\n return result;\n}\n\n// ============================================================\n// SensorGroupColorEvent — sensor group HUD colors\n// ============================================================\n\nfunction sensorGroupColorEventUnpack(\n bs: BitStream,\n _conn: ConnectionContext\n): SensorGroupColorEventData {\n const sensorGroup = bs.readInt(5);\n const updateMask = bs.readU32();\n const colors: SensorGroupColorEntry[] = [];\n for (let i = 0; i < 32; i++) {\n if ((1 << i) & updateMask) {\n if (bs.readFlag()) {\n colors.push({\n index: i,\n r: bs.readU8(),\n g: bs.readU8(),\n b: bs.readU8(),\n a: bs.readU8(),\n });\n } else {\n colors.push({ index: i, default: true });\n }\n }\n }\n return { type: \"SensorGroupColorEvent\", sensorGroup, updateMask, colors };\n}\n\n// ============================================================\n// ResetClientTargetsEvent — clear all client targets\n// ============================================================\n\nfunction resetClientTargetsEventUnpack(\n bs: BitStream,\n _conn: ConnectionContext\n): ResetClientTargetsEventData {\n return {\n type: \"ResetClientTargetsEvent\",\n clientTargetsOnly: bs.readFlag(),\n };\n}\n\n// ============================================================\n// RemoveClientTargetTypeEvent — remove targets by type\n// ============================================================\n\nfunction removeClientTargetTypeEventUnpack(\n bs: BitStream,\n _conn: ConnectionContext\n): RemoveClientTargetTypeEventData {\n return {\n type: \"RemoveClientTargetTypeEvent\",\n targetType: bs.readRangedU32(0, 3), // NumTypes=3\n };\n}\n\n// ============================================================\n// SimVoiceStreamEvent — voice chat audio streaming\n// ============================================================\n\nfunction simVoiceStreamEventUnpack(\n bs: BitStream,\n _conn: ConnectionContext\n): SimVoiceStreamEventData {\n const streamId = bs.readInt(5);\n const sequence = bs.readInt(6); // SEQUENCE_BITS=6\n const codecId = bs.readInt(2);\n // Server connection (demo is always client-side):\n const clientId = bs.readU8();\n const result: SimVoiceStreamEventData = {\n type: \"SimVoiceStreamEvent\",\n streamId,\n sequence,\n codecId,\n clientId,\n size: 0,\n };\n if (sequence === 0) {\n result.objectId = bs.readInt(10); // GhostIdBitSize=10\n }\n // Size\n const VOICE_PACKET_DATA_SIZE = 16; // typical value\n if (bs.readFlag()) {\n result.size = bs.readInt(5); // SIZE_BITS=5\n } else {\n result.size = VOICE_PACKET_DATA_SIZE;\n }\n // Skip the audio data bytes (mSize bytes, but first byte is lock byte so we read mSize-1)\n if (result.size > 0) {\n result.audioData = bs.readBitsBuffer(result.size * 8);\n }\n return result;\n}\n\n// ============================================================\n// GhostingMessageEvent — ghost synchronization control\n// ============================================================\n\nfunction ghostingMessageEventUnpack(\n bs: BitStream,\n _conn: ConnectionContext\n): GhostingMessageEventData {\n return {\n type: \"GhostingMessageEvent\",\n sequence: bs.readU32(),\n message: bs.readInt(3),\n ghostCount: bs.readInt(11),\n };\n}\n\n// ============================================================\n// GhostAlwaysObjectEvent — scope-always ghost objects\n// ============================================================\n\nfunction ghostAlwaysObjectEventUnpack(\n bs: BitStream,\n conn: ConnectionContext\n): GhostAlwaysObjectEventData {\n const ghostIndex = bs.readInt(10);\n const hasObjectData = bs.readFlag();\n const result: GhostAlwaysObjectEventData = {\n type: \"GhostAlwaysObjectEvent\",\n ghostIndex,\n _hasObjectData: hasObjectData,\n };\n\n if (hasObjectData) {\n const classId = bs.readInt(7); // NetObjectClassBitSize=7\n result.classId = classId;\n\n // Binary FUN_005854e0: classId + full object unpackUpdate payload.\n // We must consume the embedded payload here to keep packet bit alignment.\n const parser = conn.getGhostParser?.(classId);\n if (!parser) {\n throw new Error(`No ghost parser for GhostAlwaysObjectEvent classId=${classId}`);\n }\n result.objectData = parser.unpackUpdate(bs, true, conn);\n }\n return result;\n}\n\n// ============================================================\n// PathManagerEvent — server path/patrol route updates\n// ============================================================\n\nfunction pathManagerEventUnpack(\n bs: BitStream,\n _conn: ConnectionContext\n): PathManagerEventData {\n if (bs.readFlag()) {\n // NewPaths\n const numPaths = bs.readU32();\n const paths: PathData[] = [];\n for (let i = 0; i < numPaths && i < 256; i++) {\n const totalTime = bs.readU32();\n const numPoints = bs.readU32();\n const points: PathPoint[] = [];\n for (let j = 0; j < numPoints && j < 1024; j++) {\n points.push({\n position: bs.readPoint3F(),\n msToNext: bs.readU32(),\n });\n }\n paths.push({ totalTime, points });\n }\n return { type: \"PathManagerEvent\", messageType: \"NewPaths\", paths };\n } else {\n // ModifyPath\n const modifiedPath = bs.readU32();\n const totalTime = bs.readU32();\n const numPoints = bs.readU32();\n const points: PathPoint[] = [];\n for (let j = 0; j < numPoints && j < 1024; j++) {\n points.push({\n position: bs.readPoint3F(),\n msToNext: bs.readU32(),\n });\n }\n return {\n type: \"PathManagerEvent\",\n messageType: \"ModifyPath\",\n modifiedPath,\n path: { totalTime, points },\n };\n }\n}\n\n// ============================================================\n// LightningStrikeEvent — lightning visual effects\n// ============================================================\n\nfunction lightningStrikeEventUnpack(\n bs: BitStream,\n _conn: ConnectionContext\n): LightningStrikeEventData {\n // Binary FUN_00626e40: flag → early return if false → readInt(11) + readFloat(10) + readFloat(10) + flag → readInt(11)\n const result: LightningStrikeEventData = { type: \"LightningStrikeEvent\" };\n if (!bs.readFlag()) {\n return result;\n }\n result.sourceGhost = bs.readInt(11); // resolveGhost: getNextPow2(0x401)=2048 → 11 bits\n result.startX = bs.readFloat(10);\n result.startY = bs.readFloat(10);\n if (bs.readFlag()) {\n result.targetGhost = bs.readInt(11);\n }\n return result;\n}\n\n// ============================================================\n// FileChunkEvent — file transfer data chunks\n// ============================================================\n\nfunction fileChunkEventUnpack(\n bs: BitStream,\n _conn: ConnectionContext\n): FileChunkEventData {\n const chunkLen = bs.readRangedU32(0, 63);\n const chunkData = bs.readBitsBuffer(chunkLen * 8);\n return { type: \"FileChunkEvent\", chunkLen, chunkData };\n}\n\n// ============================================================\n// DownloadMessageEvent — file download control\n// ============================================================\n\nfunction downloadMessageEventUnpack(\n bs: BitStream,\n _conn: ConnectionContext\n): DownloadMessageEventData {\n return {\n type: \"DownloadMessageEvent\",\n value: bs.readU32(),\n message: bs.readInt(3),\n };\n}\n\n// ============================================================\n// FileDownloadRequestEvent — request file transfers\n// ============================================================\n\nfunction fileDownloadRequestEventUnpack(\n bs: BitStream,\n _conn: ConnectionContext\n): FileDownloadRequestEventData {\n const nameCount = bs.readRangedU32(0, 31);\n const fileNames: string[] = [];\n for (let i = 0; i < nameCount; i++) {\n fileNames.push(bs.readString());\n }\n return { type: \"FileDownloadRequestEvent\", fileNames };\n}\n\n// ============================================================\n// SimpleMessageEvent — test/debug messages\n// ============================================================\n\nfunction simpleMessageEventUnpack(\n bs: BitStream,\n _conn: ConnectionContext\n): SimpleMessageEventData {\n return { type: \"SimpleMessageEvent\", message: bs.readString() };\n}\n\n// ============================================================\n// CRCChallengeEvent — CRC validation challenge from server\n// Binary: FUN_006a2c30 reads 3×U32 + readFlag\n// ============================================================\n\nfunction crcChallengeEventUnpack(\n bs: BitStream,\n _conn: ConnectionContext\n): CRCChallengeEventData {\n return {\n type: \"CRCChallengeEvent\",\n crcValue: bs.readU32(),\n field1: bs.readU32(),\n field2: bs.readU32(),\n flag: bs.readFlag(),\n };\n}\n\n// ============================================================\n// CRCChallengeResponseEvent — CRC validation response\n// Binary: FUN_006a2e00 reads 3×U32\n// ============================================================\n\nfunction crcChallengeResponseEventUnpack(\n bs: BitStream,\n _conn: ConnectionContext\n): CRCChallengeResponseEventData {\n return {\n type: \"CRCChallengeResponseEvent\",\n crcValue: bs.readU32(),\n field1: bs.readU32(),\n field2: bs.readU32(),\n };\n}\n\n// ============================================================\n// GravityEvent — gravity value synchronization\n// Binary: FUN_005ff5b0 reads 4 bytes (F32 gravity value)\n// ============================================================\n\nfunction gravityEventUnpack(\n bs: BitStream,\n _conn: ConnectionContext\n): GravityEventData {\n return {\n type: \"GravityEvent\",\n gravity: bs.readF32(),\n };\n}\n\n// ============================================================\n// FogChallengeEvent — fog validation (stub: not found in binary)\n// ============================================================\n\nfunction fogChallengeEventUnpack(\n _bs: BitStream,\n _conn: ConnectionContext\n): FogChallengeEventData {\n return { type: \"FogChallengeEvent\" };\n}\n\n// ============================================================\n// Register all event parsers\n// ============================================================\n\nexport function registerEventParsers(registry: ClassRegistry): void {\n registry.catalogEvent({\n name: \"SimDataBlockEvent\",\n unpack: simDataBlockEventUnpack,\n });\n registry.catalogEvent({\n name: \"NetStringEvent\",\n unpack: netStringEventUnpack,\n });\n registry.catalogEvent({\n name: \"Sim2DAudioEvent\",\n unpack: sim2DAudioEventUnpack,\n });\n registry.catalogEvent({\n name: \"Sim3DAudioEvent\",\n unpack: sim3DAudioEventUnpack,\n });\n registry.catalogEvent({\n name: \"SetSensorGroupEvent\",\n unpack: setSensorGroupEventUnpack,\n });\n registry.catalogEvent({\n name: \"SetServerTargetEvent\",\n unpack: setServerTargetEventUnpack,\n });\n registry.catalogEvent({\n name: \"TargetToEvent\",\n unpack: targetToEventUnpack,\n });\n registry.catalogEvent({\n name: \"SetObjectActiveImageEvent\",\n unpack: setObjectActiveImageEventUnpack,\n });\n registry.catalogEvent({\n name: \"SetMissionCRCEvent\",\n unpack: setMissionCRCEventUnpack,\n });\n registry.catalogEvent({\n name: \"RemoteCommandEvent\",\n unpack: remoteCommandEventUnpack,\n });\n registry.catalogEvent({\n name: \"TargetInfoEvent\",\n unpack: targetInfoEventUnpack,\n });\n registry.catalogEvent({\n name: \"TargetFreeEvent\",\n unpack: targetFreeEventUnpack,\n });\n registry.catalogEvent({\n name: \"SimTargetAudioEvent\",\n unpack: simTargetAudioEventUnpack,\n });\n registry.catalogEvent({\n name: \"SensorGroupColorEvent\",\n unpack: sensorGroupColorEventUnpack,\n });\n registry.catalogEvent({\n name: \"ResetClientTargetsEvent\",\n unpack: resetClientTargetsEventUnpack,\n });\n registry.catalogEvent({\n name: \"RemoveClientTargetTypeEvent\",\n unpack: removeClientTargetTypeEventUnpack,\n });\n registry.catalogEvent({\n name: \"SimVoiceStreamEvent\",\n unpack: simVoiceStreamEventUnpack,\n });\n registry.catalogEvent({\n name: \"GhostingMessageEvent\",\n unpack: ghostingMessageEventUnpack,\n });\n registry.catalogEvent({\n name: \"GhostAlwaysObjectEvent\",\n unpack: ghostAlwaysObjectEventUnpack,\n });\n registry.catalogEvent({\n name: \"PathManagerEvent\",\n unpack: pathManagerEventUnpack,\n });\n registry.catalogEvent({\n name: \"LightningStrikeEvent\",\n unpack: lightningStrikeEventUnpack,\n });\n registry.catalogEvent({\n name: \"FileChunkEvent\",\n unpack: fileChunkEventUnpack,\n });\n registry.catalogEvent({\n name: \"DownloadMessageEvent\",\n unpack: downloadMessageEventUnpack,\n });\n registry.catalogEvent({\n name: \"FileDownloadRequestEvent\",\n unpack: fileDownloadRequestEventUnpack,\n });\n registry.catalogEvent({\n name: \"SimpleMessageEvent\",\n unpack: simpleMessageEventUnpack,\n });\n registry.catalogEvent({\n name: \"CRCChallengeEvent\",\n unpack: crcChallengeEventUnpack,\n });\n registry.catalogEvent({\n name: \"CRCChallengeResponseEvent\",\n unpack: crcChallengeResponseEventUnpack,\n });\n registry.catalogEvent({\n name: \"GravityEvent\",\n unpack: gravityEventUnpack,\n });\n registry.catalogEvent({\n name: \"FogChallengeEvent\",\n unpack: fogChallengeEventUnpack,\n });\n}\n"]}
|