UNPKG

furnace-module-interface

Version:

An interface for loading, processing and saving furnace modules in an object-oriented manner. Fully typed via TypeScript.

329 lines (328 loc) 14.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FurnaceChipVRC7 = exports.FurnaceSystemVRC7 = exports.FurnaceChipVRC6 = exports.FurnaceSystemVRC6 = exports.FurnaceSystemNESVRC7 = exports.FurnaceChipRicoh2A03 = exports.FurnaceSystemNES = exports.FurnaceChipPCEngine = exports.FurnaceSystemPCEngine = exports.FurnaceChipGameBoy = exports.FurnaceSystemGameBoy = exports.FurnaceChipYM2612ExtendedWithDualPCM = exports.FurnaceSystemYM2612ExtendedWithDualPCM = exports.FurnaceChipYM2612Extended = exports.FurnaceSystemYM2612Extended = exports.FurnaceSystemGenesisExtended = exports.FurnaceChipYM2612WithDualPCM = exports.FurnaceSystemYM2612WithDualPCM = exports.FurnaceChipYM2612 = exports.FurnaceSystemYM2612 = exports.FurnaceSystemGenesis = exports.FurnaceChipSN76489 = exports.FurnaceSystemSMS = exports.FurnaceChipEnum = exports.FurnaceSystemEnum = exports.loadSystem = void 0; function loadSystem(id) { switch (id) { case FurnaceSystemEnum.Null: return null; case FurnaceSystemEnum.GameBoy: return new FurnaceSystemGameBoy(); case FurnaceSystemEnum.PCEngine: return new FurnaceSystemPCEngine(); case FurnaceSystemEnum.SMS: return new FurnaceSystemSMS(); case FurnaceSystemEnum.YM2612: return new FurnaceSystemYM2612(); case FurnaceSystemEnum.YM2612Extended: return new FurnaceSystemYM2612Extended(); case FurnaceSystemEnum.Genesis: return new FurnaceSystemGenesis(); case FurnaceSystemEnum.GenesisExtended: return new FurnaceSystemGenesisExtended(); case FurnaceSystemEnum.YM2612WithDualPCM: return new FurnaceSystemYM2612WithDualPCM(); case FurnaceSystemEnum.YM2612ExtendedWithDualPCM: return new FurnaceSystemYM2612ExtendedWithDualPCM(); case FurnaceSystemEnum.NES: return new FurnaceSystemNES(); case FurnaceSystemEnum.NESVRC7: return new FurnaceSystemNESVRC7(); case FurnaceSystemEnum.KonamiVRC6: return new FurnaceSystemVRC6(); case FurnaceSystemEnum.KonamiVRC7: return new FurnaceSystemVRC7(); } throw new Error("Unknown or unsupported system id 0x" + id.toString(16)); } exports.loadSystem = loadSystem; var FurnaceSystemEnum; (function (FurnaceSystemEnum) { FurnaceSystemEnum[FurnaceSystemEnum["Null"] = 0] = "Null"; FurnaceSystemEnum[FurnaceSystemEnum["Genesis"] = 2] = "Genesis"; FurnaceSystemEnum[FurnaceSystemEnum["GenesisExtended"] = 66] = "GenesisExtended"; FurnaceSystemEnum[FurnaceSystemEnum["YM2612"] = 131] = "YM2612"; FurnaceSystemEnum[FurnaceSystemEnum["YM2612Extended"] = 160] = "YM2612Extended"; FurnaceSystemEnum[FurnaceSystemEnum["SMS"] = 3] = "SMS"; FurnaceSystemEnum[FurnaceSystemEnum["YM2612WithDualPCM"] = 190] = "YM2612WithDualPCM"; FurnaceSystemEnum[FurnaceSystemEnum["YM2612ExtendedWithDualPCM"] = 189] = "YM2612ExtendedWithDualPCM"; FurnaceSystemEnum[FurnaceSystemEnum["GameBoy"] = 4] = "GameBoy"; FurnaceSystemEnum[FurnaceSystemEnum["PCEngine"] = 5] = "PCEngine"; FurnaceSystemEnum[FurnaceSystemEnum["NES"] = 6] = "NES"; FurnaceSystemEnum[FurnaceSystemEnum["NESVRC7"] = 70] = "NESVRC7"; FurnaceSystemEnum[FurnaceSystemEnum["KonamiVRC6"] = 136] = "KonamiVRC6"; FurnaceSystemEnum[FurnaceSystemEnum["KonamiVRC7"] = 157] = "KonamiVRC7"; })(FurnaceSystemEnum = exports.FurnaceSystemEnum || (exports.FurnaceSystemEnum = {})); var FurnaceChipEnum; (function (FurnaceChipEnum) { FurnaceChipEnum[FurnaceChipEnum["YM2612"] = 131] = "YM2612"; FurnaceChipEnum[FurnaceChipEnum["YM2612Extended"] = 160] = "YM2612Extended"; FurnaceChipEnum[FurnaceChipEnum["DualPCMYM2612"] = 190] = "DualPCMYM2612"; FurnaceChipEnum[FurnaceChipEnum["DualPCMYM2612Extended"] = 189] = "DualPCMYM2612Extended"; FurnaceChipEnum[FurnaceChipEnum["SN76489"] = 3] = "SN76489"; FurnaceChipEnum[FurnaceChipEnum["GameBoy"] = 4] = "GameBoy"; FurnaceChipEnum[FurnaceChipEnum["PCEngine"] = 5] = "PCEngine"; FurnaceChipEnum[FurnaceChipEnum["Ricoh2A03"] = 6] = "Ricoh2A03"; FurnaceChipEnum[FurnaceChipEnum["VRC6"] = 136] = "VRC6"; FurnaceChipEnum[FurnaceChipEnum["VRC7"] = 157] = "VRC7"; })(FurnaceChipEnum = exports.FurnaceChipEnum || (exports.FurnaceChipEnum = {})); class FurnaceSystemSMS { constructor() { this.systemId = FurnaceSystemEnum.SMS; this.name = "SMS (SN76489)"; this.chips = [new FurnaceChipSN76489(),]; } } exports.FurnaceSystemSMS = FurnaceSystemSMS; class FurnaceChipSN76489 { constructor() { this.chipId = FurnaceChipEnum.SN76489; this.channels = [ { longname: "Square 1", shortname: "S1", }, { longname: "Square 2", shortname: "S2", }, { longname: "Square 3", shortname: "S3", }, { longname: "Noise", shortname: "NO", }, ]; this.volume = 64; this.panning = 0; this.flags = 0; } } exports.FurnaceChipSN76489 = FurnaceChipSN76489; class FurnaceSystemGenesis { constructor() { this.systemId = FurnaceSystemEnum.Genesis; this.name = "Genesis"; this.chips = [new FurnaceChipYM2612(), new FurnaceChipSN76489(),]; } } exports.FurnaceSystemGenesis = FurnaceSystemGenesis; class FurnaceSystemYM2612 { constructor() { this.systemId = FurnaceSystemEnum.YM2612; this.name = "YM2612 alone"; this.chips = [new FurnaceChipYM2612(),]; } } exports.FurnaceSystemYM2612 = FurnaceSystemYM2612; class FurnaceChipYM2612 { constructor() { this.chipId = FurnaceChipEnum.YM2612; this.channels = [ { longname: "FM 1", shortname: "F1", }, { longname: "FM 2", shortname: "F2", }, { longname: "FM 3", shortname: "F3", }, { longname: "FM 4", shortname: "F4", }, { longname: "FM 5", shortname: "F5", }, { longname: "FM 6", shortname: "F6", }, ]; this.volume = 64; this.panning = 0; this.flags = 0; } } exports.FurnaceChipYM2612 = FurnaceChipYM2612; class FurnaceSystemYM2612WithDualPCM { constructor() { this.systemId = FurnaceSystemEnum.YM2612WithDualPCM; this.name = "YM2612 With Dual PCM"; this.chips = [new FurnaceChipYM2612WithDualPCM(),]; } } exports.FurnaceSystemYM2612WithDualPCM = FurnaceSystemYM2612WithDualPCM; class FurnaceChipYM2612WithDualPCM { constructor() { this.chipId = FurnaceChipEnum.DualPCMYM2612; this.channels = [ { longname: "FM 1", shortname: "F1", }, { longname: "FM 2", shortname: "F2", }, { longname: "FM 3", shortname: "F3", }, { longname: "FM 4", shortname: "F4", }, { longname: "FM 5", shortname: "F5", }, { longname: "FM 6/PCM 1", shortname: "P1", }, { longname: "PCM 2", shortname: "P2", }, ]; this.volume = 64; this.panning = 0; this.flags = 0; } } exports.FurnaceChipYM2612WithDualPCM = FurnaceChipYM2612WithDualPCM; class FurnaceSystemGenesisExtended { constructor() { this.systemId = FurnaceSystemEnum.GenesisExtended; this.name = "Genesis Extended"; this.chips = [new FurnaceChipYM2612Extended(), new FurnaceChipSN76489(),]; } } exports.FurnaceSystemGenesisExtended = FurnaceSystemGenesisExtended; class FurnaceSystemYM2612Extended { constructor() { this.systemId = FurnaceSystemEnum.YM2612Extended; this.name = "YM2612 Extended"; this.chips = [new FurnaceChipYM2612Extended(),]; } } exports.FurnaceSystemYM2612Extended = FurnaceSystemYM2612Extended; class FurnaceChipYM2612Extended { constructor() { this.chipId = FurnaceChipEnum.DualPCMYM2612Extended; this.channels = [ { longname: "FM 1", shortname: "F1", }, { longname: "FM 2", shortname: "F2", }, { longname: "FM 3 OP1", shortname: "O1", }, { longname: "FM 3 OP2", shortname: "O2", }, { longname: "FM 3 OP3", shortname: "O3", }, { longname: "FM 3 OP4", shortname: "O4", }, { longname: "FM 4", shortname: "F4", }, { longname: "FM 5", shortname: "F5", }, { longname: "FM 6", shortname: "F6", }, ]; this.volume = 64; this.panning = 0; this.flags = 0; } } exports.FurnaceChipYM2612Extended = FurnaceChipYM2612Extended; class FurnaceSystemYM2612ExtendedWithDualPCM { constructor() { this.systemId = FurnaceSystemEnum.YM2612ExtendedWithDualPCM; this.name = "YM2612 Extended With Dual PCM and CSM"; this.chips = [new FurnaceChipYM2612ExtendedWithDualPCM(),]; } } exports.FurnaceSystemYM2612ExtendedWithDualPCM = FurnaceSystemYM2612ExtendedWithDualPCM; class FurnaceChipYM2612ExtendedWithDualPCM { constructor() { this.chipId = FurnaceChipEnum.DualPCMYM2612Extended; this.channels = [ { longname: "FM 1", shortname: "F1", }, { longname: "FM 2", shortname: "F2", }, { longname: "FM 3 OP1", shortname: "O1", }, { longname: "FM 3 OP2", shortname: "O2", }, { longname: "FM 3 OP3", shortname: "O3", }, { longname: "FM 3 OP4", shortname: "O4", }, { longname: "FM 4", shortname: "F4", }, { longname: "FM 5", shortname: "F5", }, { longname: "FM 6/PCM 1", shortname: "P1", }, { longname: "PCM 2", shortname: "P2", }, { longname: "CSM Timer", shortname: "CSM", }, ]; this.volume = 64; this.panning = 0; this.flags = 0; } } exports.FurnaceChipYM2612ExtendedWithDualPCM = FurnaceChipYM2612ExtendedWithDualPCM; class FurnaceSystemGameBoy { constructor() { this.systemId = FurnaceSystemEnum.GameBoy; this.name = "Game Boy"; this.chips = [new FurnaceChipGameBoy(),]; } } exports.FurnaceSystemGameBoy = FurnaceSystemGameBoy; class FurnaceChipGameBoy { constructor() { this.chipId = FurnaceChipEnum.GameBoy; this.channels = [ { longname: "Pulse 1", shortname: "S1", }, { longname: "Pulse 2", shortname: "S2", }, { longname: "Wavetable", shortname: "WA", }, { longname: "Noise", shortname: "NO", }, ]; this.volume = 64; this.panning = 0; this.flags = 0; } } exports.FurnaceChipGameBoy = FurnaceChipGameBoy; class FurnaceSystemPCEngine { constructor() { this.systemId = FurnaceSystemEnum.PCEngine; this.name = "PC Engine"; this.chips = [new FurnaceChipPCEngine(),]; } } exports.FurnaceSystemPCEngine = FurnaceSystemPCEngine; class FurnaceChipPCEngine { constructor() { this.chipId = FurnaceChipEnum.PCEngine; this.channels = [ { longname: "Channel 1", shortname: "CH1", }, { longname: "Channel 2", shortname: "CH2", }, { longname: "Channel 3", shortname: "CH3", }, { longname: "Channel 4", shortname: "CH4", }, { longname: "Channel 5", shortname: "CH5", }, { longname: "Channel 6", shortname: "CH6", }, ]; this.volume = 64; this.panning = 0; this.flags = 0; } } exports.FurnaceChipPCEngine = FurnaceChipPCEngine; class FurnaceSystemNES { constructor() { this.systemId = FurnaceSystemEnum.NES; this.name = "NES"; this.chips = [new FurnaceChipRicoh2A03(),]; } } exports.FurnaceSystemNES = FurnaceSystemNES; class FurnaceChipRicoh2A03 { constructor() { this.chipId = FurnaceChipEnum.Ricoh2A03; this.channels = [ { longname: "Pulse 1", shortname: "S1", }, { longname: "Pulse 2", shortname: "S2", }, { longname: "Triangle", shortname: "TR", }, { longname: "Noise", shortname: "NO", }, { longname: "PCM", shortname: "PCM", }, ]; this.volume = 64; this.panning = 0; this.flags = 0; } } exports.FurnaceChipRicoh2A03 = FurnaceChipRicoh2A03; class FurnaceSystemNESVRC7 { constructor() { this.systemId = FurnaceSystemEnum.NES; this.name = "NES With Konami VRC7"; this.chips = [new FurnaceChipRicoh2A03(), new FurnaceChipVRC7(),]; } } exports.FurnaceSystemNESVRC7 = FurnaceSystemNESVRC7; class FurnaceSystemVRC6 { constructor() { this.systemId = FurnaceSystemEnum.NES; this.name = "Konami VRC6"; this.chips = [new FurnaceChipVRC6(),]; } } exports.FurnaceSystemVRC6 = FurnaceSystemVRC6; class FurnaceChipVRC6 { constructor() { this.chipId = FurnaceChipEnum.Ricoh2A03; this.channels = [ { longname: "VRC6 1", shortname: "V1", }, { longname: "VRC6 2", shortname: "V2", }, { longname: "VRC6 Saw", shortname: "VS", }, ]; this.volume = 64; this.panning = 0; this.flags = 0; } } exports.FurnaceChipVRC6 = FurnaceChipVRC6; class FurnaceSystemVRC7 { constructor() { this.systemId = FurnaceSystemEnum.NES; this.name = "Konami VRC7"; this.chips = [new FurnaceChipVRC7(),]; } } exports.FurnaceSystemVRC7 = FurnaceSystemVRC7; class FurnaceChipVRC7 { constructor() { this.chipId = FurnaceChipEnum.Ricoh2A03; this.channels = [ { longname: "FM 1", shortname: "F1", }, { longname: "FM 2", shortname: "F2", }, { longname: "FM 3", shortname: "F3", }, { longname: "FM 4", shortname: "F4", }, { longname: "FM 5", shortname: "F5", }, { longname: "FM 6", shortname: "F6", }, ]; this.volume = 64; this.panning = 0; this.flags = 0; } } exports.FurnaceChipVRC7 = FurnaceChipVRC7;