summaryrefslogtreecommitdiff
path: root/src/packets/index.ts
blob: 08ceb793338aa39f178e3250c8a9c7cf017c73ad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import { PACKET_TYPES } from "../constants";
import { AttributionPacket, BlankFramesPacket, CategoryPacket, ConsoleRegionPacket, ConsoleTypePacket, DumpCreatedPacket, DumpLastModifiedPacket, EmulatorCorePacket, EmulatorNamePacket, EmulatorVersionPacket, GameTitlePacket, MovieLicensePacket, PortControllerPacket, ROMNamePacket, RerecordsPacket, SourceLinkPacket, TASLastModifedPacket, TotalFramesPacket, VerifiedPacket } from "./general";
import { InputChunkPacket } from "./input";
import { TASDPacket, UnknownPacket } from "./utils";
import * as general from "./general";
import * as input from "./input";
export * as General from './general';
export * as Input from './input';

export function parse(type: number, buffer: Uint8Array): TASDPacket {
  switch (type) {
    // General
    case PACKET_TYPES.CONSOLE_TYPE: return general.ConsoleTypePacket.fromBuffer(buffer);
    case PACKET_TYPES.CONSOLE_REGION: return general.ConsoleRegionPacket.fromBuffer(buffer);
    case PACKET_TYPES.GAME_TITLE: return general.GameTitlePacket.fromBuffer(buffer);
    case PACKET_TYPES.ROM_NAME: return general.ROMNamePacket.fromBuffer(buffer);
    case PACKET_TYPES.ATTRIBUTION: return general.AttributionPacket.fromBuffer(buffer);
    case PACKET_TYPES.CATEGORY: return general.CategoryPacket.fromBuffer(buffer);
    case PACKET_TYPES.EMULATOR_NAME: return general.EmulatorNamePacket.fromBuffer(buffer);
    case PACKET_TYPES.EMULATOR_VERSION: return general.EmulatorVersionPacket.fromBuffer(buffer);
    case PACKET_TYPES.EMULATOR_CORE: return general.EmulatorCorePacket.fromBuffer(buffer);
    case PACKET_TYPES.TAS_LAST_MODIFIED: return general.TASLastModifedPacket.fromBuffer(buffer);
    case PACKET_TYPES.DUMP_CREATED: return general.DumpCreatedPacket.fromBuffer(buffer);
    case PACKET_TYPES.DUMP_LAST_MODIFIED: return general.DumpLastModifiedPacket.fromBuffer(buffer);
    case PACKET_TYPES.TOTAL_FRAMES: return general.TotalFramesPacket.fromBuffer(buffer);
    case PACKET_TYPES.RERECORDS: return general.RerecordsPacket.fromBuffer(buffer);
    case PACKET_TYPES.SOURCE_LINK: return general.SourceLinkPacket.fromBuffer(buffer);
    case PACKET_TYPES.BLANK_FRAMES: return general.BlankFramesPacket.fromBuffer(buffer);
    case PACKET_TYPES.VERIFIED: return general.VerifiedPacket.fromBuffer(buffer);
    case PACKET_TYPES.MEMORY_INIT: return general.MemoryInitPacket.fromBuffer(buffer);
    case PACKET_TYPES.GAME_IDENTIFIER: return general.GameIdentiferPacket.fromBuffer(buffer);
    case PACKET_TYPES.MOVIE_LICENSE: return general.MovieLicensePacket.fromBuffer(buffer);
    case PACKET_TYPES.MOVIE_FILE: return general.MovieFilePacket.fromBuffer(buffer);
    case PACKET_TYPES.PORT_CONTROLLER: return general.PortControllerPacket.fromBuffer(buffer);
    // NES
    // case PACKET_TYPES.NES_LATCH_FILTER: return XXXXX.fromBuffer(buffer);
    // case PACKET_TYPES.NES_CLOCK_FILTER: return XXXXX.fromBuffer(buffer);
    // case PACKET_TYPES.NES_OVERREAD: return XXXXX.fromBuffer(buffer);
    // case PACKET_TYPES.NES_GAME_GENIE_CODE: return XXXXX.fromBuffer(buffer);
    // SNES
    // case PACKET_TYPES.SNES_CLOCK_FILTER: return XXXXX.fromBuffer(buffer);
    // case PACKET_TYPES.SNES_OVERREAD: return XXXXX.fromBuffer(buffer);
    // case PACKET_TYPES.SNES_GAME_GENIE_CODE: return XXXXX.fromBuffer(buffer);
    // case PACKET_TYPES.SNES_LATCH_TRAIN: return XXXXX.fromBuffer(buffer);
    // Genesis
    // case PACKET_TYPES.GENESIS_GAME_GENIE_CODE: return XXXXX.fromBuffer(buffer);
    // Input
    case PACKET_TYPES.INPUT_CHUNK: return input.InputChunkPacket.fromBuffer(buffer);
    // case PACKET_TYPES.INPUT_MOMENT: return XXXXX.fromBuffer(buffer);
    // case PACKET_TYPES.TRANSITION: return XXXXX.fromBuffer(buffer);
    // case PACKET_TYPES.LAG_FRAME_CHUNK: return XXXXX.fromBuffer(buffer);
    // case PACKET_TYPES.MOVIE_TRANSITION: return XXXXX.fromBuffer(buffer);
    // Extra
    // case PACKET_TYPES.COMMENT: return XXXXX.fromBuffer(buffer);
    // case PACKET_TYPES.EXPERIMENTAL: return XXXXX.fromBuffer(buffer);
    // case PACKET_TYPES.UNSPECIFIED: return XXXXX.fromBuffer(buffer);
    // Unknown
    default: return new UnknownPacket(type, buffer);
  }
}