vgm-conv
Version:
Chip-type and clock converter for VGM.
37 lines (36 loc) • 1.51 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.YM2608ToAY8910Converter = exports.YM2203ToAY8910Converter = void 0;
const vgm_converter_1 = require("./vgm-converter");
const vgm_parser_1 = require("vgm-parser");
class SSGToAY8910Converter extends vgm_converter_1.VGMConverter {
convertCommand(cmd) {
const convertSSG = this.from.subModule == null || this.from.subModule === "ssg";
const convertFM = this.from.subModule == null || this.from.subModule === "fm";
if (cmd instanceof vgm_parser_1.VGMWriteDataCommand && cmd.chip === this.from.chip && cmd.index === this.from.index) {
if (cmd.addr < 0x10) {
if (convertSSG) {
return [cmd.copy({ target: vgm_parser_1.VGMWriteDataTargetId.ay8910 })];
}
}
else {
if (convertFM) {
return [];
}
}
}
return [cmd];
}
}
class YM2203ToAY8910Converter extends SSGToAY8910Converter {
constructor(from, to, opts) {
super(from, { chip: "ay8910", index: from.index, clock: 1 / 2, relativeClock: true });
}
}
exports.YM2203ToAY8910Converter = YM2203ToAY8910Converter;
class YM2608ToAY8910Converter extends SSGToAY8910Converter {
constructor(from, to, opts) {
super(from, { chip: "ay8910", index: from.index, clock: 1 / 4, relativeClock: true });
}
}
exports.YM2608ToAY8910Converter = YM2608ToAY8910Converter;