diff options
| author | TheMas3212 <mas3212@gmail.com> | 2023-09-24 20:57:51 +1000 |
|---|---|---|
| committer | TheMas3212 <mas3212@gmail.com> | 2023-09-24 20:57:51 +1000 |
| commit | 2341a7ec25e85481251d803be42597981d2bb9db (patch) | |
| tree | 0d1f7c40db52a5279deb53d8bfb98e83a78a1849 /src/packets/extra.ts | |
| parent | 8aea0dba74aecf0846217b5363cd3f9eab543f35 (diff) | |
| download | tasd-js-2341a7ec25e85481251d803be42597981d2bb9db.tar.gz tasd-js-2341a7ec25e85481251d803be42597981d2bb9db.zip | |
NES, SNES, Genesis and Extra Packets
Diffstat (limited to 'src/packets/extra.ts')
| -rw-r--r-- | src/packets/extra.ts | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/src/packets/extra.ts b/src/packets/extra.ts new file mode 100644 index 0000000..da8bb42 --- /dev/null +++ b/src/packets/extra.ts @@ -0,0 +1,62 @@ +import { PACKET_TYPES } from "../constants"; +import { encodeString, readBoolean, readString, writeBoolean } from "../utils"; +import { TASDPacket, buildBuffer } from "./utils"; + +export class CommentPacket implements TASDPacket { + constructor(public comment: string) {} + get key() { + return PACKET_TYPES.COMMENT; + } + get size() { + return this.comment.length; + } + static fromBuffer(buffer: Uint8Array) { + return new this(readString(buffer, 0, buffer.length)); + } + toBuffer(g_keylen: number): Uint8Array { + return buildBuffer(g_keylen, this.key, encodeString(this.comment)); + } + toString(): string { + return `Comment ${this.comment}`; + } +} + +export class ExperimentalPacket implements TASDPacket { + constructor(public experimental: boolean) {} + get key() { + return PACKET_TYPES.EXPERIMENTAL; + } + get size() { + return 1; + } + static fromBuffer(buffer: Uint8Array) { + return new this(readBoolean(buffer, 0)); + } + toBuffer(g_keylen: number): Uint8Array { + const payload = new Uint8Array(1); + writeBoolean(this.experimental, payload, 0); + return buildBuffer(g_keylen, this.key, payload); + } + toString(): string { + return `Experimental ${this.experimental}`; + } +} + +export class UnspecifiedPacket implements TASDPacket { + constructor(public data: Uint8Array) {} + get key() { + return PACKET_TYPES.UNSPECIFIED; + } + get size() { + return this.data.length; + } + static fromBuffer(buffer: Uint8Array) { + return new this(buffer); + } + toBuffer(g_keylen: number): Uint8Array { + return buildBuffer(g_keylen, this.key, this.data); + } + toString(): string { + return `Unspecified ${this.data.length}`; + } +}
\ No newline at end of file |
