Merge pull request #5053 from jriwanek-forks/fm2
More YMFM backend integration work
This commit is contained in:
@@ -18,17 +18,35 @@
|
||||
#define SOUND_OPL_H
|
||||
|
||||
enum fm_type {
|
||||
FM_YM3812 = 0, /* OPL2 */
|
||||
FM_YMF262 = 1, /* OPL3 */
|
||||
FM_YMF289B = 2, /* OPL3-L */
|
||||
FM_YMF278B = 3, /* OPL4 */
|
||||
FM_YM2151 = 4, /* OPM */
|
||||
FM_YM2149 = 0, /* SSG */
|
||||
FM_YM3526 = 1, /* OPL */
|
||||
FM_Y8950 = 2, /* MSX-Audio (OPL with ADPCM) */
|
||||
FM_YM3812 = 3, /* OPL2 */
|
||||
FM_YMF262 = 4, /* OPL3 */
|
||||
FM_YMF289B = 5, /* OPL3-L */
|
||||
FM_YMF278B = 6, /* OPL4 */
|
||||
FM_YM2413 = 7, /* OPLL */
|
||||
FM_YM2423 = 8, /* OPLL-X */
|
||||
FM_YMF281 = 9, /* OPLLP */
|
||||
FM_DS1001 = 10, /* Konami VRC7 MMC */
|
||||
FM_YM2151 = 11, /* OPM */
|
||||
FM_YM2203 = 12, /* OPN */
|
||||
FM_YM2608 = 13, /* OPNA */
|
||||
FM_YMF288 = 14, /* OPN3L */
|
||||
FM_YM2610 = 15, /* OPNB */
|
||||
FM_YM2610B = 16, /* OPNB2 */
|
||||
FM_YM2612 = 17, /* OPN2 */
|
||||
FM_YM3438 = 18, /* OPN2C */
|
||||
FM_YMF276 = 19, /* OPN2L */
|
||||
FM_YM2164 = 20, /* OPP */
|
||||
FM_YM3806 = 21, /* OPQ */
|
||||
#if 0
|
||||
FM_YM2164 = 5, /* OPP */
|
||||
FM_YMF271 = 22, /* OPX */
|
||||
#endif
|
||||
FM_ESFM = 6, /* ESFM */
|
||||
FM_OPL2BOARD = 7, /* OPL2Board (External Device) */
|
||||
FM_MAX = 8
|
||||
FM_YM2414 = 23, /* OPZ */
|
||||
FM_ESFM = 24, /* ESFM */
|
||||
FM_OPL2BOARD = 25, /* OPL2Board (External Device) */
|
||||
FM_MAX = 26
|
||||
};
|
||||
|
||||
enum fm_driver {
|
||||
@@ -58,16 +76,47 @@ extern const fm_drv_t ymfm_opl2board_drv;
|
||||
extern const device_t ym3812_nuked_device;
|
||||
extern const device_t ymf262_nuked_device;
|
||||
|
||||
extern const device_t ym2149_ymfm_device;
|
||||
|
||||
/* OPL Series */
|
||||
extern const device_t ym3526_ymfm_device;
|
||||
extern const device_t y8950_ymfm_device;
|
||||
extern const device_t ym3812_ymfm_device;
|
||||
extern const device_t ymf262_ymfm_device;
|
||||
extern const device_t ymf289b_ymfm_device;
|
||||
extern const device_t ymf278b_ymfm_device;
|
||||
extern const device_t ym2413_ymfm_device;
|
||||
extern const device_t ym2423_ymfm_device;
|
||||
extern const device_t ymf281_ymfm_device;
|
||||
extern const device_t ds1001_ymfm_device;
|
||||
|
||||
/* OPM Series */
|
||||
extern const device_t ym2151_ymfm_device;
|
||||
#if 0
|
||||
|
||||
/* OPN Series */
|
||||
extern const device_t ym2203_ymfm_device;
|
||||
extern const device_t ym2608_ymfm_device;
|
||||
extern const device_t ymf288_ymfm_device;
|
||||
extern const device_t ym2610_ymfm_device;
|
||||
extern const device_t ym2610b_ymfm_device;
|
||||
extern const device_t ym2612_ymfm_device;
|
||||
extern const device_t ym3438_ymfm_device;
|
||||
extern const device_t ymf276_ymfm_device;
|
||||
|
||||
/* OPP Series */
|
||||
extern const device_t ym2164_ymfm_device;
|
||||
|
||||
/* OPQ Series */
|
||||
extern const device_t ym3806_ymfm_device;
|
||||
|
||||
/* OPX Series */
|
||||
#if 0
|
||||
extern const device_t ymf271_ymfm_device;
|
||||
#endif
|
||||
|
||||
/* OPZ Series */
|
||||
extern const device_t ym2414_ymfm_device;
|
||||
|
||||
extern const device_t esfm_esfmu_device;
|
||||
|
||||
#ifdef USE_LIBSERIALPORT
|
||||
|
||||
@@ -39,6 +39,21 @@ uint8_t
|
||||
fm_driver_get(int chip_id, fm_drv_t *drv)
|
||||
{
|
||||
switch (chip_id) {
|
||||
case FM_YM2149: /* SSG */
|
||||
*drv = ymfm_drv;
|
||||
drv->priv = device_add_inst(&ym2149_ymfm_device, fm_dev_inst[fm_driver][chip_id]++);
|
||||
break;
|
||||
|
||||
case FM_YM3526: /* OPL */
|
||||
*drv = ymfm_drv;
|
||||
drv->priv = device_add_inst(&ym3526_ymfm_device, fm_dev_inst[fm_driver][chip_id]++);
|
||||
break;
|
||||
|
||||
case FM_Y8950: /* MSX-Audio (OPL with ADPCM) */
|
||||
*drv = ymfm_drv;
|
||||
drv->priv = device_add_inst(&y8950_ymfm_device, fm_dev_inst[fm_driver][chip_id]++);
|
||||
break;
|
||||
|
||||
case FM_YM3812: /* OPL2 */
|
||||
if (fm_driver == FM_DRV_NUKED) {
|
||||
*drv = nuked_opl_drv;
|
||||
@@ -69,17 +84,92 @@ fm_driver_get(int chip_id, fm_drv_t *drv)
|
||||
drv->priv = device_add_inst(&ymf278b_ymfm_device, fm_dev_inst[fm_driver][chip_id]++);
|
||||
break;
|
||||
|
||||
case FM_YM2413: /* OPLL */
|
||||
*drv = ymfm_drv;
|
||||
drv->priv = device_add_inst(&ym2413_ymfm_device, fm_dev_inst[fm_driver][chip_id]++);
|
||||
break;
|
||||
|
||||
case FM_YM2423: /* OPLL-X */
|
||||
*drv = ymfm_drv;
|
||||
drv->priv = device_add_inst(&ym2423_ymfm_device, fm_dev_inst[fm_driver][chip_id]++);
|
||||
break;
|
||||
|
||||
case FM_YMF281: /* OPLLP */
|
||||
*drv = ymfm_drv;
|
||||
drv->priv = device_add_inst(&ymf281_ymfm_device, fm_dev_inst[fm_driver][chip_id]++);
|
||||
break;
|
||||
|
||||
case FM_DS1001: /* Konami VRC7 MMC */
|
||||
*drv = ymfm_drv;
|
||||
drv->priv = device_add_inst(&ds1001_ymfm_device, fm_dev_inst[fm_driver][chip_id]++);
|
||||
break;
|
||||
|
||||
case FM_YM2151: /* OPM */
|
||||
*drv = ymfm_drv;
|
||||
drv->priv = device_add_inst(&ym2151_ymfm_device, fm_dev_inst[fm_driver][chip_id]++);
|
||||
break;
|
||||
|
||||
#if 0
|
||||
case FM_YM2203: /* OPN */
|
||||
*drv = ymfm_drv;
|
||||
drv->priv = device_add_inst(&ym2203_ymfm_device, fm_dev_inst[fm_driver][chip_id]++);
|
||||
break;
|
||||
|
||||
case FM_YM2608: /* OPNA */
|
||||
*drv = ymfm_drv;
|
||||
drv->priv = device_add_inst(&ym2608_ymfm_device, fm_dev_inst[fm_driver][chip_id]++);
|
||||
break;
|
||||
|
||||
case FM_YMF288: /* OPN3L */
|
||||
*drv = ymfm_drv;
|
||||
drv->priv = device_add_inst(&ymf288_ymfm_device, fm_dev_inst[fm_driver][chip_id]++);
|
||||
break;
|
||||
|
||||
case FM_YM2610: /* OPNB */
|
||||
*drv = ymfm_drv;
|
||||
drv->priv = device_add_inst(&ym2610_ymfm_device, fm_dev_inst[fm_driver][chip_id]++);
|
||||
break;
|
||||
|
||||
case FM_YM2610B: /* OPNB2 */
|
||||
*drv = ymfm_drv;
|
||||
drv->priv = device_add_inst(&ym2610b_ymfm_device, fm_dev_inst[fm_driver][chip_id]++);
|
||||
break;
|
||||
|
||||
case FM_YM2612: /* OPN2 */
|
||||
*drv = ymfm_drv;
|
||||
drv->priv = device_add_inst(&ym2612_ymfm_device, fm_dev_inst[fm_driver][chip_id]++);
|
||||
break;
|
||||
|
||||
case FM_YM3438: /* OPN2C */
|
||||
*drv = ymfm_drv;
|
||||
drv->priv = device_add_inst(&ym3438_ymfm_device, fm_dev_inst[fm_driver][chip_id]++);
|
||||
break;
|
||||
|
||||
case FM_YMF276: /* OPN2L */
|
||||
*drv = ymfm_drv;
|
||||
drv->priv = device_add_inst(&ymf276_ymfm_device, fm_dev_inst[fm_driver][chip_id]++);
|
||||
break;
|
||||
|
||||
case FM_YM2164: /* OPP */
|
||||
*drv = ymfm_drv;
|
||||
drv->priv = device_add_inst(&ym2164_ymfm_device, fm_dev_inst[fm_driver][chip_id]++);
|
||||
break;
|
||||
|
||||
case FM_YM3806: /* OPQ */
|
||||
*drv = ymfm_drv;
|
||||
drv->priv = device_add_inst(&ym3806_ymfm_device, fm_dev_inst[fm_driver][chip_id]++);
|
||||
break;
|
||||
|
||||
#if 0
|
||||
case FM_YMF271: /* OPX */
|
||||
*drv = ymfm_drv;
|
||||
drv->priv = device_add_inst(&ymf271_ymfm_device, fm_dev_inst[fm_driver][chip_id]++);
|
||||
break;
|
||||
#endif
|
||||
|
||||
case FM_YM2414: /* OPZ */
|
||||
*drv = ymfm_drv;
|
||||
drv->priv = device_add_inst(&ym2414_ymfm_device, fm_dev_inst[fm_driver][chip_id]++);
|
||||
break;
|
||||
|
||||
case FM_ESFM:
|
||||
*drv = esfmu_opl_drv;
|
||||
|
||||
@@ -18,8 +18,16 @@
|
||||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include "ymfm/ymfm_ssg.h"
|
||||
#include "ymfm/ymfm_misc.h"
|
||||
#include "ymfm/ymfm_opl.h"
|
||||
#include "ymfm/ymfm_opm.h"
|
||||
#include "ymfm/ymfm_opn.h"
|
||||
#include "ymfm/ymfm_opq.h"
|
||||
#if 0
|
||||
#include "ymfm/ymfm_opx.h"
|
||||
#endif
|
||||
#include "ymfm/ymfm_opz.h"
|
||||
|
||||
extern "C" {
|
||||
#define HAVE_STDARG_H
|
||||
@@ -320,6 +328,21 @@ ymfm_drv_init(const device_t *info)
|
||||
YMFMChipBase *fm;
|
||||
|
||||
switch (info->local) {
|
||||
case FM_YM2149: /* OPL */
|
||||
// TODO: Check rates and frequency
|
||||
fm = (YMFMChipBase *) new YMFMChip<ymfm::ym2149>(14318181, FM_YM2149, FREQ_49716);
|
||||
break;
|
||||
|
||||
case FM_YM3526: /* OPL */
|
||||
// TODO: Check rates and frequency
|
||||
fm = (YMFMChipBase *) new YMFMChip<ymfm::ym3526>(14318181, FM_YM3526, FREQ_49716);
|
||||
break;
|
||||
|
||||
case FM_Y8950: /* MSX-Audio (OPL with ADPCM) */
|
||||
// TODO: Check rates and frequency
|
||||
fm = (YMFMChipBase *) new YMFMChip<ymfm::y8950>(14318181, FM_Y8950, FREQ_49716);
|
||||
break;
|
||||
|
||||
default:
|
||||
case FM_YM3812: /* OPL2 */
|
||||
fm = (YMFMChipBase *) new YMFMChip<ymfm::ym3812>(3579545, FM_YM3812, FREQ_49716);
|
||||
@@ -339,15 +362,92 @@ ymfm_drv_init(const device_t *info)
|
||||
fm = (YMFMChipBase *) new YMFMChip<ymfm::ymf278b>(33868800, FM_YMF278B, FREQ_44100);
|
||||
break;
|
||||
|
||||
case FM_YM2413: /* OPLL */
|
||||
// TODO: Check rates and frequency
|
||||
fm = (YMFMChipBase *) new YMFMChip<ymfm::ym2413>(14318181, FM_YM2413, FREQ_49716);
|
||||
break;
|
||||
|
||||
case FM_YM2423: /* OPLL-X */
|
||||
// TODO: Check rates and frequency
|
||||
fm = (YMFMChipBase *) new YMFMChip<ymfm::ym2423>(14318181, FM_YM2423, FREQ_49716);
|
||||
break;
|
||||
|
||||
case FM_YMF281: /* OPLLP */
|
||||
// TODO: Check rates and frequency
|
||||
fm = (YMFMChipBase *) new YMFMChip<ymfm::ymf281>(14318181, FM_YMF281, FREQ_49716);
|
||||
break;
|
||||
|
||||
case FM_DS1001: /* Konami VRC7 MMC */
|
||||
// TODO: Check rates and frequency
|
||||
fm = (YMFMChipBase *) new YMFMChip<ymfm::ds1001>(14318181, FM_DS1001, FREQ_49716);
|
||||
break;
|
||||
|
||||
case FM_YM2151: /* OPM */
|
||||
// TODO: Check rates and frequency
|
||||
fm = (YMFMChipBase *) new YMFMChip<ymfm::ym2151>(14318181, FM_YM2151, FREQ_49716);
|
||||
break;
|
||||
|
||||
#if 0
|
||||
case FM_YM2203: /* OPN */
|
||||
// TODO: Check rates and frequency
|
||||
fm = (YMFMChipBase *) new YMFMChip<ymfm::ym2203>(14318181, FM_YM2203, FREQ_49716);
|
||||
break;
|
||||
|
||||
case FM_YM2608: /* OPNA */
|
||||
// TODO: Check rates and frequency
|
||||
fm = (YMFMChipBase *) new YMFMChip<ymfm::ym2608>(14318181, FM_YM2608, FREQ_49716);
|
||||
break;
|
||||
|
||||
case FM_YMF288: /* OPN3L */
|
||||
// TODO: Check rates and frequency
|
||||
fm = (YMFMChipBase *) new YMFMChip<ymfm::ymf288>(14318181, FM_YMF288, FREQ_49716);
|
||||
break;
|
||||
|
||||
case FM_YM2610: /* OPNB */
|
||||
// TODO: Check rates and frequency
|
||||
fm = (YMFMChipBase *) new YMFMChip<ymfm::ym2610>(14318181, FM_YM2610, FREQ_49716);
|
||||
break;
|
||||
|
||||
case FM_YM2610B: /* OPNB2 */
|
||||
// TODO: Check rates and frequency
|
||||
fm = (YMFMChipBase *) new YMFMChip<ymfm::ym2610b>(14318181, FM_YM2610B, FREQ_49716);
|
||||
break;
|
||||
|
||||
case FM_YM2612: /* OPN2 */
|
||||
// TODO: Check rates and frequency
|
||||
fm = (YMFMChipBase *) new YMFMChip<ymfm::ym2612>(14318181, FM_YM2612, FREQ_49716);
|
||||
break;
|
||||
|
||||
case FM_YM3438: /* OPN2C */
|
||||
// TODO: Check rates and frequency
|
||||
fm = (YMFMChipBase *) new YMFMChip<ymfm::ym3438>(14318181, FM_YM3438, FREQ_49716);
|
||||
break;
|
||||
|
||||
case FM_YMF276: /* OPN2L */
|
||||
// TODO: Check function call, rates and frequency
|
||||
fm = (YMFMChipBase *) new YMFMChip<ymfm::ymf276>(14318181, FM_YMF276, FREQ_49716);
|
||||
break;
|
||||
|
||||
case FM_YM2164: /* OPP */
|
||||
// TODO: Check rates and frequency
|
||||
fm = (YMFMChipBase *) new YMFMChip<ymfm::ym2164>(14318181, FM_YM2164, FREQ_49716);
|
||||
break;
|
||||
|
||||
case FM_YM3806: /* OPQ */
|
||||
// TODO: Check rates and frequency
|
||||
fm = (YMFMChipBase *) new YMFMChip<ymfm::ym3806>(14318181, FM_YM3806, FREQ_49716);
|
||||
break;
|
||||
|
||||
#if 0
|
||||
case FM_YMF271: /* OPX */
|
||||
// TODO: Check rates and frequency
|
||||
fm = (YMFMChipBase *) new YMFMChip<ymfm::ymf271>(14318181, FM_YMF271, FREQ_49716);
|
||||
break;
|
||||
#endif
|
||||
|
||||
case FM_YM2414: /* OPZ */
|
||||
// TODO: Check rates and frequency
|
||||
fm = (YMFMChipBase *) new YMFMChip<ymfm::ym2414>(14318181, FM_YM2414, FREQ_49716);
|
||||
break;
|
||||
}
|
||||
|
||||
fm->set_do_cycles(1);
|
||||
@@ -428,6 +528,48 @@ ymfm_drv_generate(void *priv, int32_t *data, uint32_t num_samples)
|
||||
drv->generate(data, num_samples);
|
||||
}
|
||||
|
||||
const device_t ym2149_ymfm_device = {
|
||||
.name = "Yamaha 2149 SSG (YMFM)",
|
||||
.internal_name = "ym2149_ymfm",
|
||||
.flags = 0,
|
||||
.local = FM_YM2149,
|
||||
.init = ymfm_drv_init,
|
||||
.close = ymfm_drv_close,
|
||||
.reset = NULL,
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t ym3526_ymfm_device = {
|
||||
.name = "Yamaha YM3526 OPL (YMFM)",
|
||||
.internal_name = "ym3526_ymfm",
|
||||
.flags = 0,
|
||||
.local = FM_YM3526,
|
||||
.init = ymfm_drv_init,
|
||||
.close = ymfm_drv_close,
|
||||
.reset = NULL,
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t y8950_ymfm_device = {
|
||||
.name = "Yamaha Y8950 (YMFM)",
|
||||
.internal_name = "y8950_ymfm",
|
||||
.flags = 0,
|
||||
.local = FM_Y8950,
|
||||
.init = ymfm_drv_init,
|
||||
.close = ymfm_drv_close,
|
||||
.reset = NULL,
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t ym3812_ymfm_device = {
|
||||
.name = "Yamaha YM3812 OPL2 (YMFM)",
|
||||
.internal_name = "ym3812_ymfm",
|
||||
@@ -470,6 +612,76 @@ const device_t ymf289b_ymfm_device = {
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t ymf278b_ymfm_device = {
|
||||
.name = "Yamaha YMF278B OPL4 (YMFM)",
|
||||
.internal_name = "ymf278b_ymfm",
|
||||
.flags = 0,
|
||||
.local = FM_YMF278B,
|
||||
.init = ymfm_drv_init,
|
||||
.close = ymfm_drv_close,
|
||||
.reset = NULL,
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t ym2413_ymfm_device = {
|
||||
.name = "Yamaha YM2413 OPLL (YMFM)",
|
||||
.internal_name = "ym2413_ymfm",
|
||||
.flags = 0,
|
||||
.local = FM_YM2413,
|
||||
.init = ymfm_drv_init,
|
||||
.close = ymfm_drv_close,
|
||||
.reset = NULL,
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t ym2423_ymfm_device = {
|
||||
.name = "Yamaha YM2423 OPLL-X (YMFM)",
|
||||
.internal_name = "ym2423_ymfm",
|
||||
.flags = 0,
|
||||
.local = FM_YM2423,
|
||||
.init = ymfm_drv_init,
|
||||
.close = ymfm_drv_close,
|
||||
.reset = NULL,
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t ymf281_ymfm_device = {
|
||||
.name = "Yamaha YMF281 OPLLP (YMFM)",
|
||||
.internal_name = "ymf281_ymfm",
|
||||
.flags = 0,
|
||||
.local = FM_YMF281,
|
||||
.init = ymfm_drv_init,
|
||||
.close = ymfm_drv_close,
|
||||
.reset = NULL,
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t ds1001_ymfm_device = {
|
||||
.name = "Konami VRC7 MMC (YMFM)",
|
||||
.internal_name = "ds1001_ymfm",
|
||||
.flags = 0,
|
||||
.local = FM_DS1001,
|
||||
.init = ymfm_drv_init,
|
||||
.close = ymfm_drv_close,
|
||||
.reset = NULL,
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t ym2151_ymfm_device = {
|
||||
.name = "Yamaha YM2151 OPM (YMFM)",
|
||||
.internal_name = "ym2151_ymfm",
|
||||
@@ -484,7 +696,118 @@ const device_t ym2151_ymfm_device = {
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
#if 0
|
||||
const device_t ym2203_ymfm_device = {
|
||||
.name = "Yamaha YM2203 OPN (YMFM)",
|
||||
.internal_name = "ym2203_ymfm",
|
||||
.flags = 0,
|
||||
.local = FM_YM2203,
|
||||
.init = ymfm_drv_init,
|
||||
.close = ymfm_drv_close,
|
||||
.reset = NULL,
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t ym2608_ymfm_device = {
|
||||
.name = "Yamaha YM2608 OPNA (YMFM)",
|
||||
.internal_name = "ym2608_ymfm",
|
||||
.flags = 0,
|
||||
.local = FM_YM2608,
|
||||
.init = ymfm_drv_init,
|
||||
.close = ymfm_drv_close,
|
||||
.reset = NULL,
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t ymf288_ymfm_device = {
|
||||
.name = "Yamaha YMF288 OPN3L (YMFM)",
|
||||
.internal_name = "ymf288_ymfm",
|
||||
.flags = 0,
|
||||
.local = FM_YMF288,
|
||||
.init = ymfm_drv_init,
|
||||
.close = ymfm_drv_close,
|
||||
.reset = NULL,
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t ym2610_ymfm_device = {
|
||||
.name = "Yamaha YM2610 OPNB (YMFM)",
|
||||
.internal_name = "ym2610_ymfm",
|
||||
.flags = 0,
|
||||
.local = FM_YM2610,
|
||||
.init = ymfm_drv_init,
|
||||
.close = ymfm_drv_close,
|
||||
.reset = NULL,
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t ym2610b_ymfm_device = {
|
||||
.name = "Yamaha YM2610b OPNB2 (YMFM)",
|
||||
.internal_name = "ym2610b_ymfm",
|
||||
.flags = 0,
|
||||
.local = FM_YM2610B,
|
||||
.init = ymfm_drv_init,
|
||||
.close = ymfm_drv_close,
|
||||
.reset = NULL,
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t ym2612_ymfm_device = {
|
||||
.name = "Yamaha YM2612 OPN2 (YMFM)",
|
||||
.internal_name = "ym2612_ymfm",
|
||||
.flags = 0,
|
||||
.local = FM_YM2612,
|
||||
.init = ymfm_drv_init,
|
||||
.close = ymfm_drv_close,
|
||||
.reset = NULL,
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t ym3438_ymfm_device = {
|
||||
.name = "Yamaha YM3438 OPN2C (YMFM)",
|
||||
.internal_name = "ym3438_ymfm",
|
||||
.flags = 0,
|
||||
.local = FM_YM3438,
|
||||
.init = ymfm_drv_init,
|
||||
.close = ymfm_drv_close,
|
||||
.reset = NULL,
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t ymf276_ymfm_device = {
|
||||
.name = "Yamaha YMF276 OPN2L (YMFM)",
|
||||
.internal_name = "ymf276_ymfm",
|
||||
.flags = 0,
|
||||
.local = FM_YMF276,
|
||||
.init = ymfm_drv_init,
|
||||
.close = ymfm_drv_close,
|
||||
.reset = NULL,
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t ym2164_ymfm_device = {
|
||||
.name = "Yamaha YM2164 OPP (YMFM)",
|
||||
.internal_name = "ym2164_ymfm",
|
||||
@@ -498,13 +821,12 @@ const device_t ym2164_ymfm_device = {
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
#endif
|
||||
|
||||
const device_t ymf278b_ymfm_device = {
|
||||
.name = "Yamaha YMF278B OPL4 (YMFM)",
|
||||
.internal_name = "ymf278b_ymfm",
|
||||
const device_t ym3806_ymfm_device = {
|
||||
.name = "Yamaha YM3806 OPQ (YMFM)",
|
||||
.internal_name = "ym3806_ymfm",
|
||||
.flags = 0,
|
||||
.local = FM_YMF278B,
|
||||
.local = FM_YM3806,
|
||||
.init = ymfm_drv_init,
|
||||
.close = ymfm_drv_close,
|
||||
.reset = NULL,
|
||||
@@ -514,6 +836,37 @@ const device_t ymf278b_ymfm_device = {
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
#if 0
|
||||
const device_t ymf271_ymfm_device = {
|
||||
.name = "Yamaha YMF271 OPX (YMFM)",
|
||||
.internal_name = "ym271_ymfm",
|
||||
.flags = 0,
|
||||
.local = FM_YMF271,
|
||||
.init = ymfm_drv_init,
|
||||
.close = ymfm_drv_close,
|
||||
.reset = NULL,
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
#endif
|
||||
|
||||
const device_t ym2414_ymfm_device = {
|
||||
.name = "Yamaha YM2414 OPZ (YMFM)",
|
||||
.internal_name = "ym2414_ymfm",
|
||||
.flags = 0,
|
||||
.local = FM_YM2414,
|
||||
.init = ymfm_drv_init,
|
||||
.close = ymfm_drv_close,
|
||||
.reset = NULL,
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
|
||||
const fm_drv_t ymfm_drv {
|
||||
.read = &ymfm_drv_read,
|
||||
.write = &ymfm_drv_write,
|
||||
|
||||
@@ -9,4 +9,14 @@
|
||||
# CMake build script.
|
||||
#
|
||||
|
||||
add_library(ymfm STATIC ymfm_misc.cpp ymfm_opl.cpp ymfm_opm.cpp ymfm_opn.cpp ymfm_opq.cpp ymfm_opz.cpp ymfm_pcm.cpp ymfm_adpcm.cpp)
|
||||
add_library(ymfm STATIC
|
||||
ymfm_adpcm.cpp
|
||||
ymfm_misc.cpp
|
||||
ymfm_opl.cpp
|
||||
ymfm_opm.cpp
|
||||
ymfm_opn.cpp
|
||||
ymfm_opq.cpp
|
||||
ymfm_opz.cpp
|
||||
ymfm_pcm.cpp
|
||||
ymfm_ssg.cpp
|
||||
)
|
||||
|
||||
@@ -793,7 +793,7 @@ public:
|
||||
ymf276(ymfm_interface &intf) : ym2612(intf) { }
|
||||
|
||||
// generate one sample of sound
|
||||
void generate(output_data *output, uint32_t numsamples);
|
||||
void generate(output_data *output, uint32_t numsamples = 1);
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -105,7 +105,7 @@ public:
|
||||
static constexpr uint8_t STATUS_IRQ = 0;
|
||||
|
||||
// constructor
|
||||
opz_registers();
|
||||
opx_registers();
|
||||
|
||||
// reset to initial state
|
||||
void reset();
|
||||
@@ -244,17 +244,17 @@ protected:
|
||||
// IMPLEMENTATION CLASSES
|
||||
//*********************************************************
|
||||
|
||||
// ======================> ym2414
|
||||
// ======================> ymf271
|
||||
|
||||
class ym2414
|
||||
class ymf271
|
||||
{
|
||||
public:
|
||||
using fm_engine = fm_engine_base<opz_registers>;
|
||||
using fm_engine = fm_engine_base<opx_registers>;
|
||||
static constexpr uint32_t OUTPUTS = fm_engine::OUTPUTS;
|
||||
using output_data = fm_engine::output_data;
|
||||
|
||||
// constructor
|
||||
ym2414(ymfm_interface &intf);
|
||||
ymf271(ymfm_interface &intf);
|
||||
|
||||
// reset
|
||||
void reset();
|
||||
@@ -287,4 +287,4 @@ protected:
|
||||
}
|
||||
|
||||
|
||||
#endif // YMFM_OPZ_H
|
||||
#endif // YMFM_OPX_H
|
||||
|
||||
Reference in New Issue
Block a user