vgm-conv
Version:
Chip-type and clock converter for VGM.
31 lines (30 loc) • 1.41 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AY8910ToYM2608Converter = exports.AY8910ToYM2203Converter = void 0;
const vgm_converter_1 = require("./vgm-converter");
const vgm_parser_1 = require("vgm-parser");
class AY8910ToYM2203Converter extends vgm_converter_1.VGMConverter {
constructor(from, to, opts) {
super(from, { chip: "ym2203", index: from.index, clock: 2, relativeClock: true });
}
convertCommand(cmd) {
if (cmd instanceof vgm_parser_1.VGMWriteDataCommand && cmd.chip === "ay8910" && cmd.index === this.from.index) {
return [cmd.copy({ target: vgm_parser_1.VGMWriteDataTargetId.ym2203 })];
}
return [cmd];
}
}
exports.AY8910ToYM2203Converter = AY8910ToYM2203Converter;
class AY8910ToYM2608Converter extends vgm_converter_1.VGMConverter {
constructor(from, to, opts) {
super(from, { chip: "ym2608", index: from.index, clock: 4, relativeClock: true });
}
convertCommand(cmd) {
if (cmd instanceof vgm_parser_1.VGMWriteDataCommand && cmd.chip === "ay8910" && cmd.index === this.from.index) {
const id = cmd.index == 0 ? vgm_parser_1.VGMWriteDataTargetId.ym2608_p0 : vgm_parser_1.VGMWriteDataTargetId.ym2608_2_p0;
return [cmd.copy({ target: id })];
}
return [cmd];
}
}
exports.AY8910ToYM2608Converter = AY8910ToYM2608Converter;