mirror of
https://github.com/86Box/86Box.git
synced 2026-02-23 18:08:20 -07:00
Merge branch '86Box:master' into master
This commit is contained in:
44
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
44
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -6,7 +6,15 @@ body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thanks for taking the time to fill out this bug report!
|
||||
## Thanks for taking the time to fill out this bug report!
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Checklist
|
||||
options:
|
||||
- label: I **have searched** the issue tracker and **was unable** to find an [open](../issues?q=is%3Aissue+is%3Aopen) or [closed](../issues?q=is%3Aissue+is%3Aclosed) issue matching what I'm seeing.
|
||||
required: true
|
||||
- label: I **have verified** that the issue is happening in the **[latest nightly build](https://ci.86box.net/job/86Box/lastSuccessfulBuild/artifact/)**, or the latest commit, if building from source.
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: What happened?
|
||||
@@ -25,20 +33,13 @@ body:
|
||||
attributes:
|
||||
label: Operating system
|
||||
description: What is your host operating system?
|
||||
placeholder: e.g. Windows 10
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
attributes:
|
||||
label: CPU
|
||||
description: What is your host CPU?
|
||||
placeholder: e.g. AMD Ryzen 5 5600G
|
||||
placeholder: e.g. Windows 11 24H2
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
attributes:
|
||||
label: 86Box version
|
||||
description: What version of 86Box are you running? (Saying "Latest from Jenkins" is not helpful.)
|
||||
description: What version of 86Box are you running? (Please ensure you have updated to the [latest build](https://ci.86box.net/job/86Box/lastSuccessfulBuild/artifact/) before reporting. Merely saying "Latest from Jenkins" is not helpful.)
|
||||
placeholder: e.g. v4.0 build 5000
|
||||
validations:
|
||||
required: true
|
||||
@@ -47,13 +48,13 @@ body:
|
||||
label: Build architecture
|
||||
description: 86Box for what architecture are you using?
|
||||
options:
|
||||
- Linux - ARM (32-bit)
|
||||
- Linux - ARM (64-bit)
|
||||
- Linux - x64 (64-bit)
|
||||
- Linux - x86 (32-bit)
|
||||
- macOS - Universal (Intel and Apple Silicon)
|
||||
- Windows - x64 (64-bit)
|
||||
- macOS - Universal (Intel and Apple Silicon)
|
||||
- Linux - x64 (64-bit)
|
||||
- Linux - ARM (64-bit)
|
||||
- Windows - x86 (32-bit)
|
||||
- Linux - ARM (32-bit)
|
||||
- Linux - x86 (32-bit)
|
||||
validations:
|
||||
required: true
|
||||
- type: checkboxes
|
||||
@@ -63,18 +64,7 @@ body:
|
||||
options:
|
||||
- label: New recompiler
|
||||
- label: Debug build
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Download source
|
||||
description: Where did you download 86Box from?
|
||||
options:
|
||||
- Official website (Jenkins, GitHub)
|
||||
- Manager auto-update
|
||||
- I built 86Box myself (please tell us more about your build configuration)
|
||||
- I got 86Box from a third party repository (please tell us where)
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Additional context
|
||||
description: Is there anything else you want to tell us?
|
||||
description: Is there anything else you want to tell us? If you build 86Box from source, please post your build configuration here.
|
||||
|
||||
4
.github/ISSUE_TEMPLATE/config.yml
vendored
4
.github/ISSUE_TEMPLATE/config.yml
vendored
@@ -1,8 +1,8 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: Machine Request
|
||||
url: https://github.com/86Box/86Box/issues/3577#issue-comment-box
|
||||
about: Please submit machine addition requests under this tracking issue.
|
||||
url: https://github.com/86Box/86Box/discussions/4823#issue-comment-box
|
||||
about: Please submit machine addition requests in this discussion thread.
|
||||
- name: Feature Request or Question
|
||||
url: https://github.com/86Box/86Box/discussions
|
||||
about: Please submit feature requests and ask questions here.
|
||||
|
||||
@@ -18,13 +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, /* OPL 4 */
|
||||
FM_ESFM = 4, /* ESFM */
|
||||
FM_OPL2BOARD = 5, /* OPL2BOARD (External Device)*/
|
||||
FM_MAX = 6
|
||||
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_YMF271 = 22, /* OPX */
|
||||
#endif
|
||||
FM_YM2414 = 23, /* OPZ */
|
||||
FM_ESFM = 24, /* ESFM */
|
||||
FM_OPL2BOARD = 25, /* OPL2Board (External Device) */
|
||||
FM_MAX = 26
|
||||
};
|
||||
|
||||
enum fm_driver {
|
||||
@@ -48,18 +70,55 @@ extern uint8_t fm_driver_get(int chip_id, fm_drv_t *drv);
|
||||
extern const fm_drv_t nuked_opl_drv;
|
||||
extern const fm_drv_t ymfm_drv;
|
||||
extern const fm_drv_t esfmu_opl_drv;
|
||||
extern const fm_drv_t ymfm_opl2board_drv;
|
||||
extern const fm_drv_t ymfm_opl2board_drv;
|
||||
|
||||
#ifdef EMU_DEVICE_H
|
||||
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;
|
||||
|
||||
/* 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
|
||||
extern const device_t ym_opl2board_device;
|
||||
#endif
|
||||
|
||||
@@ -491,7 +491,7 @@ const device_t fluidsynth_device = {
|
||||
.init = fluidsynth_init,
|
||||
.close = fluidsynth_close,
|
||||
.reset = NULL,
|
||||
{ .available = fluidsynth_available },
|
||||
.available = fluidsynth_available,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = fluidsynth_config
|
||||
|
||||
@@ -427,7 +427,7 @@ const device_t mt32_old_device = {
|
||||
.init = mt32_old_init,
|
||||
.close = mt32_close,
|
||||
.reset = NULL,
|
||||
{ .available = mt32_old_available },
|
||||
.available = mt32_old_available,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = mt32_config
|
||||
@@ -441,7 +441,7 @@ const device_t mt32_new_device = {
|
||||
.init = mt32_new_init,
|
||||
.close = mt32_close,
|
||||
.reset = NULL,
|
||||
{ .available = mt32_new_available },
|
||||
.available = mt32_new_available,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = mt32_config
|
||||
@@ -455,7 +455,7 @@ const device_t cm32l_device = {
|
||||
.init = cm32l_init,
|
||||
.close = mt32_close,
|
||||
.reset = NULL,
|
||||
{ .available = cm32l_available },
|
||||
.available = cm32l_available,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = mt32_config
|
||||
@@ -469,7 +469,7 @@ const device_t cm32ln_device = {
|
||||
.init = cm32ln_init,
|
||||
.close = mt32_close,
|
||||
.reset = NULL,
|
||||
{ .available = cm32ln_available },
|
||||
.available = cm32ln_available,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = mt32_config
|
||||
|
||||
@@ -724,7 +724,7 @@ const device_t opl4_midi_device = {
|
||||
.init = opl4_init,
|
||||
.close = opl4_close,
|
||||
.reset = NULL,
|
||||
{ .available = opl4_midi_available },
|
||||
.available = opl4_midi_available,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
|
||||
@@ -285,7 +285,7 @@ const device_t rtmidi_output_device = {
|
||||
.init = rtmidi_output_init,
|
||||
.close = rtmidi_output_close,
|
||||
.reset = NULL,
|
||||
{ .available = rtmidi_out_get_num_devs },
|
||||
.available = rtmidi_out_get_num_devs,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = system_midi_config
|
||||
@@ -299,7 +299,7 @@ const device_t rtmidi_input_device = {
|
||||
.init = rtmidi_input_init,
|
||||
.close = rtmidi_input_close,
|
||||
.reset = NULL,
|
||||
{ .available = rtmidi_in_get_num_devs },
|
||||
.available = rtmidi_in_get_num_devs,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = midi_input_config
|
||||
|
||||
@@ -43,73 +43,73 @@ static const struct {
|
||||
} ac97_codecs[] = {
|
||||
// clang-format off
|
||||
{
|
||||
.device = &ad1881_device,
|
||||
.min_rate = 7000,
|
||||
.max_rate = 48000,
|
||||
.misc_flags = AC97_MASTER_6B | AC97_MONOOUT | AC97_PCBEEP | AC97_PHONE | AC97_VIDEO | AC97_AUXIN | AC97_POP | AC97_MS | AC97_LPBK,
|
||||
.reset_flags = (1 << AC97_3D_SHIFT), /* datasheet contradicts itself on AC97_HPOUT */
|
||||
.extid_flags = AC97_VRA,
|
||||
.pcsr_mask = 0xbf,
|
||||
.vendor_regs = (const ac97_vendor_reg_t[]) {{0, 0x74, 0x0000, 0xff07}, {0, 0x76, 0x0404, 0xdde5}, {0, 0x78, 48000, 0x0000}, {0, 0x7a, 48000, 0x0000}, {0}}
|
||||
.device = &ad1881_device,
|
||||
.min_rate = 7000,
|
||||
.max_rate = 48000,
|
||||
.misc_flags = AC97_MASTER_6B | AC97_MONOOUT | AC97_PCBEEP | AC97_PHONE | AC97_VIDEO | AC97_AUXIN | AC97_POP | AC97_MS | AC97_LPBK,
|
||||
.reset_flags = (1 << AC97_3D_SHIFT), /* datasheet contradicts itself on AC97_HPOUT */
|
||||
.extid_flags = AC97_VRA,
|
||||
.pcsr_mask = 0xbf,
|
||||
.vendor_regs = (const ac97_vendor_reg_t[]) {{0, 0x74, 0x0000, 0xff07}, {0, 0x76, 0x0404, 0xdde5}, {0, 0x78, 48000, 0x0000}, {0, 0x7a, 48000, 0x0000}, {0}}
|
||||
},
|
||||
{
|
||||
.device = &ak4540_device,
|
||||
.misc_flags = AC97_MONOOUT | AC97_PCBEEP | AC97_PHONE | AC97_VIDEO | AC97_AUXIN | AC97_MS | AC97_LPBK,
|
||||
.pcsr_mask = 0x1f
|
||||
.device = &ak4540_device,
|
||||
.misc_flags = AC97_MONOOUT | AC97_PCBEEP | AC97_PHONE | AC97_VIDEO | AC97_AUXIN | AC97_MS | AC97_LPBK,
|
||||
.pcsr_mask = 0x1f
|
||||
},
|
||||
{
|
||||
.device = &alc100_device,
|
||||
.misc_flags = AC97_AUXOUT | AC97_MONOOUT | AC97_PCBEEP | AC97_PHONE | AC97_VIDEO | AC97_AUXIN | AC97_POP | AC97_MS | AC97_LPBK,
|
||||
.reset_flags = (22 << AC97_3D_SHIFT),
|
||||
.extid_flags = AC97_AMAP,
|
||||
.pcsr_mask = 0xbf
|
||||
.device = &alc100_device,
|
||||
.misc_flags = AC97_AUXOUT | AC97_MONOOUT | AC97_PCBEEP | AC97_PHONE | AC97_VIDEO | AC97_AUXIN | AC97_POP | AC97_MS | AC97_LPBK,
|
||||
.reset_flags = (22 << AC97_3D_SHIFT),
|
||||
.extid_flags = AC97_AMAP,
|
||||
.pcsr_mask = 0xbf
|
||||
},
|
||||
{
|
||||
.device = &cs4297_device,
|
||||
.misc_flags = AC97_MASTER_6B | AC97_AUXOUT | AC97_AUXOUT_6B | AC97_MONOOUT | AC97_MONOOUT_6B | AC97_PCBEEP | AC97_PHONE | AC97_VIDEO | AC97_AUXIN | AC97_MS | AC97_LPBK,
|
||||
.reset_flags = AC97_HPOUT | AC97_DAC_18B | AC97_ADC_18B,
|
||||
.extid_flags = 0,
|
||||
.pcsr_mask = 0x7f,
|
||||
.vendor_regs = (const ac97_vendor_reg_t[]) {{0, 0x5a, 0x0301, 0x0000}, {0}}
|
||||
.device = &cs4297_device,
|
||||
.misc_flags = AC97_MASTER_6B | AC97_AUXOUT | AC97_AUXOUT_6B | AC97_MONOOUT | AC97_MONOOUT_6B | AC97_PCBEEP | AC97_PHONE | AC97_VIDEO | AC97_AUXIN | AC97_MS | AC97_LPBK,
|
||||
.reset_flags = AC97_HPOUT | AC97_DAC_18B | AC97_ADC_18B,
|
||||
.extid_flags = 0,
|
||||
.pcsr_mask = 0x7f,
|
||||
.vendor_regs = (const ac97_vendor_reg_t[]) {{0, 0x5a, 0x0301, 0x0000}, {0}}
|
||||
},
|
||||
{
|
||||
.device = &cs4297a_device,
|
||||
.misc_flags = AC97_MASTER_6B | AC97_AUXOUT | AC97_MONOOUT | AC97_PCBEEP | AC97_PHONE | AC97_VIDEO | AC97_AUXIN | AC97_MS | AC97_LPBK,
|
||||
.reset_flags = AC97_HPOUT | AC97_DAC_20B | AC97_ADC_18B | (6 << AC97_3D_SHIFT),
|
||||
.extid_flags = AC97_AMAP,
|
||||
.pcsr_mask = 0xff,
|
||||
.vendor_regs = (const ac97_vendor_reg_t[]) {{0, 0x5e, 0x0000, 0x01b0}, {0, 0x60, 0x0023, 0x0001}, {0, 0x68, 0x0000, 0xdfff}, {0}}
|
||||
.device = &cs4297a_device,
|
||||
.misc_flags = AC97_MASTER_6B | AC97_AUXOUT | AC97_MONOOUT | AC97_PCBEEP | AC97_PHONE | AC97_VIDEO | AC97_AUXIN | AC97_MS | AC97_LPBK,
|
||||
.reset_flags = AC97_HPOUT | AC97_DAC_20B | AC97_ADC_18B | (6 << AC97_3D_SHIFT),
|
||||
.extid_flags = AC97_AMAP,
|
||||
.pcsr_mask = 0xff,
|
||||
.vendor_regs = (const ac97_vendor_reg_t[]) {{0, 0x5e, 0x0000, 0x01b0}, {0, 0x60, 0x0023, 0x0001}, {0, 0x68, 0x0000, 0xdfff}, {0}}
|
||||
},
|
||||
{
|
||||
.device = &stac9708_device,
|
||||
.misc_flags = AC97_AUXOUT | AC97_MONOOUT | AC97_PCBEEP | AC97_PHONE | AC97_VIDEO | AC97_AUXIN | AC97_MS | AC97_LPBK,
|
||||
.reset_flags = (26 << AC97_3D_SHIFT) | AC97_DAC_18B | AC97_ADC_18B,
|
||||
.extid_flags = AC97_SDAC,
|
||||
.pcsr_mask = 0xff,
|
||||
.eascr_mask = 0x02,
|
||||
.vendor_regs = (const ac97_vendor_reg_t[]) {{0, 0x6c, 0x0000, 0x0003}, {0, 0x74, 0x0000, 0x0003}, {0}}
|
||||
.device = &stac9708_device,
|
||||
.misc_flags = AC97_AUXOUT | AC97_MONOOUT | AC97_PCBEEP | AC97_PHONE | AC97_VIDEO | AC97_AUXIN | AC97_MS | AC97_LPBK,
|
||||
.reset_flags = (26 << AC97_3D_SHIFT) | AC97_DAC_18B | AC97_ADC_18B,
|
||||
.extid_flags = AC97_SDAC,
|
||||
.pcsr_mask = 0xff,
|
||||
.eascr_mask = 0x02,
|
||||
.vendor_regs = (const ac97_vendor_reg_t[]) {{0, 0x6c, 0x0000, 0x0003}, {0, 0x74, 0x0000, 0x0003}, {0}}
|
||||
},
|
||||
{
|
||||
.device = &stac9721_device,
|
||||
.misc_flags = AC97_AUXOUT | AC97_MONOOUT | AC97_PCBEEP | AC97_PHONE | AC97_VIDEO | AC97_AUXIN | AC97_MS | AC97_LPBK,
|
||||
.reset_flags = (26 << AC97_3D_SHIFT) | AC97_DAC_18B | AC97_ADC_18B,
|
||||
.extid_flags = AC97_AMAP,
|
||||
.pcsr_mask = 0xff,
|
||||
.vendor_regs = (const ac97_vendor_reg_t[]) {{0, 0x6c, 0x0000, 0x0000}, {0, 0x6e, 0x0000, 0x0003}, {0, 0x70, 0x0000, 0xffff}, {0, 0x72, 0x0000, 0x0006}, {0, 0x74, 0x0000, 0x0003}, {0, 0x76, 0x0000, 0xffff}, {0, 0x78, 0x0000, 0x3802}, {0}}
|
||||
.device = &stac9721_device,
|
||||
.misc_flags = AC97_AUXOUT | AC97_MONOOUT | AC97_PCBEEP | AC97_PHONE | AC97_VIDEO | AC97_AUXIN | AC97_MS | AC97_LPBK,
|
||||
.reset_flags = (26 << AC97_3D_SHIFT) | AC97_DAC_18B | AC97_ADC_18B,
|
||||
.extid_flags = AC97_AMAP,
|
||||
.pcsr_mask = 0xff,
|
||||
.vendor_regs = (const ac97_vendor_reg_t[]) {{0, 0x6c, 0x0000, 0x0000}, {0, 0x6e, 0x0000, 0x0003}, {0, 0x70, 0x0000, 0xffff}, {0, 0x72, 0x0000, 0x0006}, {0, 0x74, 0x0000, 0x0003}, {0, 0x76, 0x0000, 0xffff}, {0, 0x78, 0x0000, 0x3802}, {0}}
|
||||
},
|
||||
{
|
||||
.device = &tr28023_device,
|
||||
.misc_flags = AC97_MASTER_6B | AC97_MONOOUT | AC97_MONOOUT_6B | AC97_PCBEEP | AC97_PHONE | AC97_POP | AC97_MS | AC97_LPBK,
|
||||
.reset_flags = 0,
|
||||
.extid_flags = 0,
|
||||
.pcsr_mask = 0x3f
|
||||
.device = &tr28023_device,
|
||||
.misc_flags = AC97_MASTER_6B | AC97_MONOOUT | AC97_MONOOUT_6B | AC97_PCBEEP | AC97_PHONE | AC97_POP | AC97_MS | AC97_LPBK,
|
||||
.reset_flags = 0,
|
||||
.extid_flags = 0,
|
||||
.pcsr_mask = 0x3f
|
||||
},
|
||||
{
|
||||
.device = &wm9701a_device,
|
||||
.misc_flags = AC97_AUXOUT | AC97_MONOOUT | AC97_PCBEEP | AC97_PHONE | AC97_VIDEO | AC97_AUXIN | AC97_MS | AC97_LPBK,
|
||||
.reset_flags = AC97_DAC_18B | AC97_ADC_18B,
|
||||
.extid_flags = 0,
|
||||
.pcsr_mask = 0x3f
|
||||
.device = &wm9701a_device,
|
||||
.misc_flags = AC97_AUXOUT | AC97_MONOOUT | AC97_PCBEEP | AC97_PHONE | AC97_VIDEO | AC97_AUXIN | AC97_MS | AC97_LPBK,
|
||||
.reset_flags = AC97_DAC_18B | AC97_ADC_18B,
|
||||
.extid_flags = 0,
|
||||
.pcsr_mask = 0x3f
|
||||
}
|
||||
// clang-format on
|
||||
};
|
||||
@@ -661,7 +661,7 @@ const device_t ad1881_device = {
|
||||
.init = ac97_codec_init,
|
||||
.close = ac97_codec_close,
|
||||
.reset = ac97_codec_reset,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
@@ -675,7 +675,7 @@ const device_t ak4540_device = {
|
||||
.init = ac97_codec_init,
|
||||
.close = ac97_codec_close,
|
||||
.reset = ac97_codec_reset,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
@@ -689,7 +689,7 @@ const device_t alc100_device = {
|
||||
.init = ac97_codec_init,
|
||||
.close = ac97_codec_close,
|
||||
.reset = ac97_codec_reset,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
@@ -703,7 +703,7 @@ const device_t cs4297_device = {
|
||||
.init = ac97_codec_init,
|
||||
.close = ac97_codec_close,
|
||||
.reset = ac97_codec_reset,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
@@ -717,7 +717,7 @@ const device_t cs4297a_device = {
|
||||
.init = ac97_codec_init,
|
||||
.close = ac97_codec_close,
|
||||
.reset = ac97_codec_reset,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
@@ -731,7 +731,7 @@ const device_t stac9708_device = {
|
||||
.init = ac97_codec_init,
|
||||
.close = ac97_codec_close,
|
||||
.reset = ac97_codec_reset,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
@@ -745,7 +745,7 @@ const device_t stac9721_device = {
|
||||
.init = ac97_codec_init,
|
||||
.close = ac97_codec_close,
|
||||
.reset = ac97_codec_reset,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
@@ -759,7 +759,7 @@ const device_t tr28023_device = {
|
||||
.init = ac97_codec_init,
|
||||
.close = ac97_codec_close,
|
||||
.reset = ac97_codec_reset,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
@@ -773,7 +773,7 @@ const device_t wm9701a_device = {
|
||||
.init = ac97_codec_init,
|
||||
.close = ac97_codec_close,
|
||||
.reset = ac97_codec_reset,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
|
||||
@@ -839,7 +839,7 @@ const device_t ac97_via_device = {
|
||||
.init = ac97_via_init,
|
||||
.close = ac97_via_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = ac97_via_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
|
||||
@@ -151,7 +151,7 @@ const device_t adlib_device = {
|
||||
.init = adlib_init,
|
||||
.close = adlib_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
@@ -165,7 +165,7 @@ const device_t adlib_mca_device = {
|
||||
.init = adlib_mca_init,
|
||||
.close = adlib_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
|
||||
@@ -1273,7 +1273,7 @@ const device_t adgold_device = {
|
||||
.init = adgold_init,
|
||||
.close = adgold_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = adgold_config
|
||||
|
||||
@@ -2405,7 +2405,7 @@ const device_t es1371_device = {
|
||||
.init = es1371_init,
|
||||
.close = es1371_close,
|
||||
.reset = es1371_reset,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = es1371_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = es1371_config
|
||||
@@ -2419,7 +2419,7 @@ const device_t es1371_onboard_device = {
|
||||
.init = es1371_init,
|
||||
.close = es1371_close,
|
||||
.reset = es1371_reset,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = es1371_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = es1371_onboard_config
|
||||
@@ -2433,7 +2433,7 @@ const device_t es1373_device = {
|
||||
.init = es1371_init,
|
||||
.close = es1371_close,
|
||||
.reset = es1371_reset,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = es1371_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = es1373_config
|
||||
@@ -2447,7 +2447,7 @@ const device_t es1373_onboard_device = {
|
||||
.init = es1371_init,
|
||||
.close = es1371_close,
|
||||
.reset = es1371_reset,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = es1371_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = es1371_onboard_config
|
||||
@@ -2461,7 +2461,7 @@ const device_t ct5880_device = {
|
||||
.init = es1371_init,
|
||||
.close = es1371_close,
|
||||
.reset = es1371_reset,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = es1371_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = ct5880_config
|
||||
@@ -2475,7 +2475,7 @@ const device_t ct5880_onboard_device = {
|
||||
.init = es1371_init,
|
||||
.close = es1371_close,
|
||||
.reset = es1371_reset,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = es1371_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = es1371_onboard_config
|
||||
|
||||
@@ -1588,7 +1588,7 @@ const device_t azt2316a_device = {
|
||||
.init = azt_init,
|
||||
.close = azt_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = azt_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = azt2316a_config
|
||||
@@ -1602,7 +1602,7 @@ const device_t azt1605_device = {
|
||||
.init = azt_init,
|
||||
.close = azt_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = azt_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = azt1605_config
|
||||
|
||||
@@ -1547,7 +1547,7 @@ const device_t cmi8338_device = {
|
||||
.init = cmi8x38_init,
|
||||
.close = cmi8x38_close,
|
||||
.reset = cmi8x38_reset,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = cmi8x38_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = cmi8x38_config
|
||||
@@ -1561,7 +1561,7 @@ const device_t cmi8338_onboard_device = {
|
||||
.init = cmi8x38_init,
|
||||
.close = cmi8x38_close,
|
||||
.reset = cmi8x38_reset,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = cmi8x38_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = cmi8x38_config
|
||||
@@ -1575,7 +1575,7 @@ const device_t cmi8738_device = {
|
||||
.init = cmi8x38_init,
|
||||
.close = cmi8x38_close,
|
||||
.reset = cmi8x38_reset,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = cmi8x38_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = cmi8738_config
|
||||
@@ -1589,7 +1589,7 @@ const device_t cmi8738_onboard_device = {
|
||||
.init = cmi8x38_init,
|
||||
.close = cmi8x38_close,
|
||||
.reset = cmi8x38_reset,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = cmi8x38_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = cmi8x38_config
|
||||
@@ -1603,7 +1603,7 @@ const device_t cmi8738_6ch_onboard_device = {
|
||||
.init = cmi8x38_init,
|
||||
.close = cmi8x38_close,
|
||||
.reset = cmi8x38_reset,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = cmi8x38_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = cmi8x38_config
|
||||
|
||||
@@ -249,7 +249,7 @@ const device_t cms_device = {
|
||||
.init = cms_init,
|
||||
.close = cms_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = cms_config
|
||||
|
||||
@@ -869,7 +869,7 @@ const device_t cs4235_device = {
|
||||
.init = cs423x_init,
|
||||
.close = cs423x_close,
|
||||
.reset = cs423x_reset,
|
||||
{ .available = cs423x_available },
|
||||
.available = cs423x_available,
|
||||
.speed_changed = cs423x_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
@@ -883,7 +883,7 @@ const device_t cs4235_onboard_device = {
|
||||
.init = cs423x_init,
|
||||
.close = cs423x_close,
|
||||
.reset = cs423x_reset,
|
||||
{ .available = cs423x_available },
|
||||
.available = cs423x_available,
|
||||
.speed_changed = cs423x_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
@@ -897,7 +897,7 @@ const device_t cs4236b_device = {
|
||||
.init = cs423x_init,
|
||||
.close = cs423x_close,
|
||||
.reset = cs423x_reset,
|
||||
{ .available = cs423x_available },
|
||||
.available = cs423x_available,
|
||||
.speed_changed = cs423x_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
@@ -911,7 +911,7 @@ const device_t cs4237b_device = {
|
||||
.init = cs423x_init,
|
||||
.close = cs423x_close,
|
||||
.reset = cs423x_reset,
|
||||
{ .available = cs423x_available },
|
||||
.available = cs423x_available,
|
||||
.speed_changed = cs423x_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
@@ -925,7 +925,7 @@ const device_t cs4238b_device = {
|
||||
.init = cs423x_init,
|
||||
.close = cs423x_close,
|
||||
.reset = cs423x_reset,
|
||||
{ .available = cs423x_available },
|
||||
.available = cs423x_available,
|
||||
.speed_changed = cs423x_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
|
||||
@@ -1525,15 +1525,15 @@ static const device_config_t gus_config[] = {
|
||||
};
|
||||
|
||||
const device_t gus_device = {
|
||||
.name = "Gravis UltraSound",
|
||||
.name = "Gravis UltraSound",
|
||||
.internal_name = "gus",
|
||||
.flags = DEVICE_ISA | DEVICE_AT,
|
||||
.local = 0,
|
||||
.init = gus_init,
|
||||
.close = gus_close,
|
||||
.reset = gus_reset,
|
||||
{ .available = NULL },
|
||||
.flags = DEVICE_ISA | DEVICE_AT,
|
||||
.local = 0,
|
||||
.init = gus_init,
|
||||
.close = gus_close,
|
||||
.reset = gus_reset,
|
||||
.available = NULL,
|
||||
.speed_changed = gus_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = gus_config
|
||||
.force_redraw = NULL,
|
||||
.config = gus_config
|
||||
};
|
||||
|
||||
@@ -1965,7 +1965,7 @@ const device_t mpu401_device = {
|
||||
.init = mpu401_standalone_init,
|
||||
.close = mpu401_standalone_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = mpu401_standalone_config
|
||||
@@ -1979,7 +1979,7 @@ const device_t mpu401_mca_device = {
|
||||
.init = mpu401_standalone_init,
|
||||
.close = mpu401_standalone_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = mpu401_standalone_mca_config
|
||||
|
||||
@@ -39,7 +39,22 @@ uint8_t
|
||||
fm_driver_get(int chip_id, fm_drv_t *drv)
|
||||
{
|
||||
switch (chip_id) {
|
||||
case FM_YM3812:
|
||||
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;
|
||||
drv->priv = device_add_inst(&ym3812_nuked_device, fm_dev_inst[fm_driver][chip_id]++);
|
||||
@@ -49,7 +64,7 @@ fm_driver_get(int chip_id, fm_drv_t *drv)
|
||||
}
|
||||
break;
|
||||
|
||||
case FM_YMF262:
|
||||
case FM_YMF262: /* OPL3 */
|
||||
if (fm_driver == FM_DRV_NUKED) {
|
||||
*drv = nuked_opl_drv;
|
||||
drv->priv = device_add_inst(&ymf262_nuked_device, fm_dev_inst[fm_driver][chip_id]++);
|
||||
@@ -58,27 +73,116 @@ fm_driver_get(int chip_id, fm_drv_t *drv)
|
||||
drv->priv = device_add_inst(&ymf262_ymfm_device, fm_dev_inst[fm_driver][chip_id]++);
|
||||
}
|
||||
break;
|
||||
#ifdef USE_LIBSERIALPORT
|
||||
case FM_OPL2BOARD:
|
||||
*drv = ymfm_opl2board_drv;
|
||||
drv->priv = device_add_inst(&ym_opl2board_device, fm_dev_inst[fm_driver][chip_id]++);
|
||||
break;
|
||||
#endif
|
||||
case FM_YMF289B:
|
||||
|
||||
case FM_YMF289B: /* OPL3-L */
|
||||
*drv = ymfm_drv;
|
||||
drv->priv = device_add_inst(&ymf289b_ymfm_device, fm_dev_inst[fm_driver][chip_id]++);
|
||||
break;
|
||||
|
||||
case FM_YMF278B:
|
||||
case FM_YMF278B: /* OPL4 */
|
||||
*drv = ymfm_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;
|
||||
|
||||
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;
|
||||
drv->priv = device_add_inst(&esfm_esfmu_device, fm_dev_inst[fm_driver][chip_id]++);
|
||||
break;
|
||||
|
||||
#ifdef USE_LIBSERIALPORT
|
||||
case FM_OPL2BOARD:
|
||||
*drv = ymfm_opl2board_drv;
|
||||
drv->priv = device_add_inst(&ym_opl2board_device, fm_dev_inst[fm_driver][chip_id]++);
|
||||
break;
|
||||
#endif
|
||||
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -167,14 +167,14 @@ opl2board_device_close(void *priv)
|
||||
|
||||
|
||||
static const device_config_t opl2board_config[] = {
|
||||
{
|
||||
.name = "host_serial_path",
|
||||
.description = "Host Serial Device",
|
||||
.type = CONFIG_SERPORT,
|
||||
.default_string = "",
|
||||
.file_filter = NULL,
|
||||
.spinner = {},
|
||||
.selection = {}
|
||||
{
|
||||
.name = "host_serial_path",
|
||||
.description = "Host Serial Device",
|
||||
.type = CONFIG_SERPORT,
|
||||
.default_string = "",
|
||||
.file_filter = NULL,
|
||||
.spinner = {},
|
||||
.selection = {}
|
||||
},
|
||||
{ .name = "", .description = "", .type = CONFIG_END }
|
||||
};
|
||||
@@ -187,7 +187,7 @@ const device_t opl2board_device = {
|
||||
.init = opl2board_device_init,
|
||||
.close = opl2board_device_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = opl2board_config
|
||||
|
||||
@@ -242,6 +242,7 @@ esfm_drv_read(uint16_t port, void *priv)
|
||||
if (dev->status & STAT_TMR_OVER)
|
||||
ret |= STAT_TMR_ANY;
|
||||
break;
|
||||
|
||||
case 0x0001:
|
||||
ret = ESFM_read_port(&dev->opl, port & 3);
|
||||
switch (dev->opl.addr_latch & 0x5ff) {
|
||||
@@ -256,6 +257,7 @@ esfm_drv_read(uint16_t port, void *priv)
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x0002:
|
||||
case 0x0003:
|
||||
ret = 0xff;
|
||||
@@ -338,18 +340,18 @@ const device_t esfm_esfmu_device = {
|
||||
.init = esfm_drv_init,
|
||||
.close = esfm_drv_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const fm_drv_t esfmu_opl_drv = {
|
||||
&esfm_drv_read,
|
||||
&esfm_drv_write,
|
||||
&esfm_drv_update,
|
||||
&esfm_drv_reset_buffer,
|
||||
&esfm_drv_set_do_cycles,
|
||||
NULL,
|
||||
NULL,
|
||||
.read = &esfm_drv_read,
|
||||
.write = &esfm_drv_write,
|
||||
.update = &esfm_drv_update,
|
||||
.reset_buffer = &esfm_drv_reset_buffer,
|
||||
.set_do_cycles = &esfm_drv_set_do_cycles,
|
||||
.priv = NULL,
|
||||
.generate = NULL,
|
||||
};
|
||||
|
||||
@@ -68,9 +68,6 @@
|
||||
|
||||
#define RSM_FRAC 10
|
||||
|
||||
// #define OPL_FREQ FREQ_48000
|
||||
#define OPL_FREQ FREQ_49716
|
||||
|
||||
// Channel types
|
||||
enum {
|
||||
ch_2op = 0,
|
||||
@@ -1276,7 +1273,7 @@ OPL3_Reset(opl3_chip *chip, uint32_t samplerate)
|
||||
}
|
||||
|
||||
chip->noise = 1;
|
||||
chip->rateratio = (samplerate << RSM_FRAC) / 49716;
|
||||
chip->rateratio = (samplerate << RSM_FRAC) / FREQ_49716;
|
||||
chip->tremoloshift = 4;
|
||||
chip->vibshift = 1;
|
||||
|
||||
@@ -1538,7 +1535,7 @@ nuked_drv_init(const device_t *info)
|
||||
dev->status = 0x06;
|
||||
|
||||
/* Initialize the NukedOPL object. */
|
||||
OPL3_Reset(&dev->opl, OPL_FREQ);
|
||||
OPL3_Reset(&dev->opl, FREQ_49716);
|
||||
|
||||
timer_add(&dev->timers[0], nuked_timer_1, dev, 0);
|
||||
timer_add(&dev->timers[1], nuked_timer_2, dev, 0);
|
||||
@@ -1659,7 +1656,7 @@ const device_t ym3812_nuked_device = {
|
||||
.init = nuked_drv_init,
|
||||
.close = nuked_drv_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL ,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
@@ -1673,18 +1670,18 @@ const device_t ymf262_nuked_device = {
|
||||
.init = nuked_drv_init,
|
||||
.close = nuked_drv_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const fm_drv_t nuked_opl_drv = {
|
||||
&nuked_drv_read,
|
||||
&nuked_drv_write,
|
||||
&nuked_drv_update,
|
||||
&nuked_drv_reset_buffer,
|
||||
&nuked_drv_set_do_cycles,
|
||||
NULL,
|
||||
NULL,
|
||||
.read = &nuked_drv_read,
|
||||
.write = &nuked_drv_write,
|
||||
.update = &nuked_drv_update,
|
||||
.reset_buffer = &nuked_drv_reset_buffer,
|
||||
.set_do_cycles = &nuked_drv_set_do_cycles,
|
||||
.priv = NULL,
|
||||
.generate = NULL,
|
||||
};
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
#include "ymfm/ymfm_opl.h"
|
||||
#include <libserialport.h>
|
||||
|
||||
|
||||
extern "C" {
|
||||
#define HAVE_STDARG_H
|
||||
#include <86box/86box.h>
|
||||
@@ -38,7 +37,6 @@ extern "C" {
|
||||
#include <86box/ini.h>
|
||||
#include <86box/device.h>
|
||||
|
||||
|
||||
// Disable c99-designator to avoid the warnings in *_ymfm_device
|
||||
#ifdef __clang__
|
||||
# if __has_warning("-Wc99-designator")
|
||||
@@ -46,21 +44,16 @@ extern "C" {
|
||||
# pragma clang diagnostic ignored "-Wc99-designator"
|
||||
# endif
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
|
||||
#define RSM_FRAC 10
|
||||
|
||||
#define OPL_FREQ FREQ_48000
|
||||
|
||||
enum {
|
||||
FLAG_CYCLES = (1 << 0)
|
||||
};
|
||||
|
||||
uint8_t lastval = 0x00;
|
||||
|
||||
|
||||
class OPLBOARDChipBase {
|
||||
public:
|
||||
OPLBOARDChipBase(UNUSED(uint32_t clock), fm_type type, uint32_t samplerate)
|
||||
@@ -90,7 +83,6 @@ public:
|
||||
virtual uint8_t read(uint16_t addr) = 0;
|
||||
virtual void set_clock(uint32_t clock) = 0;
|
||||
|
||||
|
||||
protected:
|
||||
int32_t m_buffer[MUSICBUFLEN * 2];
|
||||
int m_buf_pos;
|
||||
@@ -244,7 +236,6 @@ public:
|
||||
|
||||
virtual void write(uint16_t addr, uint8_t data) override
|
||||
{
|
||||
|
||||
m_chip.write(addr, data);
|
||||
}
|
||||
|
||||
@@ -315,31 +306,27 @@ extern "C" {
|
||||
#include <86box/config.h>
|
||||
#include <86box/ini.h>
|
||||
|
||||
|
||||
#ifdef ENABLE_OPL_LOG
|
||||
int ymfm_do_log = ENABLE_OPL_LOG;
|
||||
#ifdef ENABLE_OPL_LOG
|
||||
int oplboard_do_log = ENABLE_OPL_LOG;
|
||||
|
||||
static void
|
||||
ymfm_log(const char *fmt, ...)
|
||||
oplboard_log(const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
if (ymfm_do_log) {
|
||||
if (oplboard_do_log) {
|
||||
va_start(ap, fmt);
|
||||
pclog_ex(fmt, ap);
|
||||
va_end(ap);
|
||||
}
|
||||
}
|
||||
#else
|
||||
# define ymfm_log(fmt, ...)
|
||||
# define oplboard_log(fmt, ...)
|
||||
#endif
|
||||
|
||||
struct sp_port *port;
|
||||
|
||||
|
||||
|
||||
void opl2board_init() {
|
||||
|
||||
device_add(&opl2board_device);
|
||||
const char* port_name = device_get_config_string("host_serial_path");
|
||||
device_context_restore();
|
||||
@@ -348,13 +335,13 @@ void opl2board_init() {
|
||||
|
||||
result = sp_get_port_by_name(port_name, &port);
|
||||
if (result != SP_OK) {
|
||||
ymfm_log("Error: Cannot find port %s\n", port_name);
|
||||
oplboard_log("Error: Cannot find port %s\n", port_name);
|
||||
return;
|
||||
}
|
||||
|
||||
result = sp_open(port, SP_MODE_READ_WRITE);
|
||||
if (result != SP_OK) {
|
||||
ymfm_log ("Error: Cannot open port %s\n", port_name);
|
||||
oplboard_log ("Error: Cannot open port %s\n", port_name);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -364,33 +351,29 @@ void opl2board_init() {
|
||||
sp_set_parity(port, SP_PARITY_NONE);
|
||||
sp_set_stopbits(port, 1);
|
||||
sp_set_flowcontrol(port, SP_FLOWCONTROL_NONE);
|
||||
|
||||
|
||||
ymfm_log("OPL2Board Serial port %s initialized at 115200 baud.\n", port_name);
|
||||
|
||||
oplboard_log("OPL2Board Serial port %s initialized at 115200 baud.\n", port_name);
|
||||
}
|
||||
|
||||
|
||||
void opl2board_write(uint8_t data) {
|
||||
if (port == NULL) {
|
||||
ymfm_log(stderr, "Error: OPL2Board Port not initialized.\n");
|
||||
oplboard_log(stderr, "Error: OPL2Board Port not initialized.\n");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
enum sp_return result = sp_blocking_write(port, &data, sizeof(data), 1000);
|
||||
if (result < 0) {
|
||||
ymfm_log(stderr, "Error: Failed to write to OPL2Board port.\n");
|
||||
oplboard_log(stderr, "Error: Failed to write to OPL2Board port.\n");
|
||||
} else {
|
||||
ymfm_log("OPL2Board: data sent: %02X\n", data);
|
||||
oplboard_log("OPL2Board: data sent: %02X\n", data);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void opl2board_reset() {
|
||||
|
||||
// Reset all voices to 0
|
||||
ymfm_log("Performing OPL2Board reset\n");
|
||||
oplboard_log("Performing OPL2Board reset\n");
|
||||
for (uint8_t i = 0x00; i < 0xFF; i++) {
|
||||
if (i >= 0x40 && i <= 0x55) {
|
||||
opl2board_write(i);
|
||||
@@ -408,11 +391,10 @@ void opl2board_close() {
|
||||
sp_close(port);
|
||||
sp_free_port(port);
|
||||
port = NULL;
|
||||
ymfm_log("OPL2Board port closed.\n");
|
||||
oplboard_log("OPL2Board port closed.\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void *
|
||||
ymfm_opl2board_drv_init(const device_t *info)
|
||||
{
|
||||
@@ -433,6 +415,7 @@ static void
|
||||
ymfm_opl2board_drv_close(void *priv)
|
||||
{
|
||||
OPLBOARDChipBase *drv = (OPLBOARDChipBase *) priv;
|
||||
|
||||
opl2board_close();
|
||||
if (drv != NULL)
|
||||
delete drv;
|
||||
@@ -453,29 +436,27 @@ ymfm_opl2board_drv_read(uint16_t port, void *priv)
|
||||
uint8_t ret = drv->read(port);
|
||||
drv->update();
|
||||
|
||||
ymfm_log("YMFM read port %04x, status = %02x\n", port, ret);
|
||||
oplboard_log("OPLBoard read port %04x, status = %02x\n", port, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void
|
||||
ymfm_opl2board_drv_write(uint16_t port, uint8_t val, void *priv)
|
||||
{
|
||||
|
||||
OPLBOARDChipBase *drv = (OPLBOARDChipBase *) priv;
|
||||
|
||||
ymfm_log("YMFM write port %04x value = %02x\n", port, val);
|
||||
oplboard_log("OPLBoard write port %04x value = %02x\n", port, val);
|
||||
if ((port == 0x380) || (port == 0x381))
|
||||
port |= 4;
|
||||
// Allow initialization of adlib
|
||||
if ((val == 0x04 || val == 0x02) || (lastval == 0x04 || lastval == 0x02)) {
|
||||
// Allow initialization of adlib
|
||||
if ((val == 0x04 || val == 0x02) || (lastval == 0x04 || lastval == 0x02))
|
||||
drv->write(port, val);
|
||||
}
|
||||
|
||||
lastval = val;
|
||||
opl2board_write(val);
|
||||
drv->update();
|
||||
}
|
||||
|
||||
|
||||
static int32_t *
|
||||
ymfm_opl2board_drv_update(void *priv)
|
||||
{
|
||||
@@ -500,22 +481,19 @@ static void
|
||||
ymfm_opl2board_drv_set_do_cycles(void *priv, int8_t do_cycles)
|
||||
{
|
||||
OPLBOARDChipBase *drv = (OPLBOARDChipBase *) priv;
|
||||
|
||||
drv->set_do_cycles(do_cycles);
|
||||
}
|
||||
|
||||
static void
|
||||
ymfm_opl2board_drv_generate(void *priv, int32_t *data, uint32_t num_samples)
|
||||
{
|
||||
|
||||
{
|
||||
OPLBOARDChipBase *drv = (OPLBOARDChipBase *) priv;
|
||||
|
||||
// drv->generate_resampled(data, num_samples);
|
||||
drv->generate(data, num_samples);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
const device_t ym_opl2board_device = {
|
||||
.name = "YMOPL2Board (External Device)",
|
||||
.internal_name = "ym_opl2board_device",
|
||||
@@ -524,21 +502,20 @@ const device_t ym_opl2board_device = {
|
||||
.init = ymfm_opl2board_drv_init,
|
||||
.close = ymfm_opl2board_drv_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const fm_drv_t ymfm_opl2board_drv {
|
||||
&ymfm_opl2board_drv_read,
|
||||
&ymfm_opl2board_drv_write,
|
||||
&ymfm_opl2board_drv_update,
|
||||
&ymfm_opl2board_drv_reset_buffer,
|
||||
&ymfm_opl2board_drv_set_do_cycles,
|
||||
NULL,
|
||||
ymfm_opl2board_drv_generate
|
||||
|
||||
.read = &ymfm_opl2board_drv_read,
|
||||
.write = &ymfm_opl2board_drv_write,
|
||||
.update = &ymfm_opl2board_drv_update,
|
||||
.reset_buffer = &ymfm_opl2board_drv_reset_buffer,
|
||||
.set_do_cycles = &ymfm_opl2board_drv_set_do_cycles,
|
||||
.priv = NULL,
|
||||
.generate = ymfm_opl2board_drv_generate
|
||||
};
|
||||
|
||||
#ifdef __clang__
|
||||
|
||||
@@ -18,7 +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
|
||||
@@ -38,13 +47,10 @@ extern "C" {
|
||||
# pragma clang diagnostic ignored "-Wc99-designator"
|
||||
# endif
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
#define RSM_FRAC 10
|
||||
|
||||
#define OPL_FREQ FREQ_48000
|
||||
|
||||
enum {
|
||||
FLAG_CYCLES = (1 << 0)
|
||||
};
|
||||
@@ -322,24 +328,126 @@ 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:
|
||||
case FM_YM3812: /* OPL2 */
|
||||
fm = (YMFMChipBase *) new YMFMChip<ymfm::ym3812>(3579545, FM_YM3812, FREQ_49716);
|
||||
break;
|
||||
|
||||
case FM_YMF262:
|
||||
case FM_YMF262: /* OPL3 */
|
||||
fm = (YMFMChipBase *) new YMFMChip<ymfm::ymf262>(14318181, FM_YMF262, FREQ_49716);
|
||||
break;
|
||||
|
||||
case FM_YMF289B:
|
||||
case FM_YMF289B: /* OPL3-L */
|
||||
/* According to the datasheet, we should be using 33868800, but YMFM appears
|
||||
to cheat and does it using the same values as the YMF262. */
|
||||
fm = (YMFMChipBase *) new YMFMChip<ymfm::ymf289b>(14318181, FM_YMF289B, FREQ_49716);
|
||||
break;
|
||||
|
||||
case FM_YMF278B:
|
||||
case FM_YMF278B: /* OPL4 */
|
||||
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;
|
||||
|
||||
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);
|
||||
@@ -379,6 +487,7 @@ static void
|
||||
ymfm_drv_write(uint16_t port, uint8_t val, void *priv)
|
||||
{
|
||||
YMFMChipBase *drv = (YMFMChipBase *) priv;
|
||||
|
||||
ymfm_log("YMFM write port %04x value = %02x\n", port, val);
|
||||
if ((port == 0x380) || (port == 0x381))
|
||||
port |= 4;
|
||||
@@ -406,6 +515,7 @@ static void
|
||||
ymfm_drv_set_do_cycles(void *priv, int8_t do_cycles)
|
||||
{
|
||||
YMFMChipBase *drv = (YMFMChipBase *) priv;
|
||||
|
||||
drv->set_do_cycles(do_cycles);
|
||||
}
|
||||
|
||||
@@ -413,10 +523,53 @@ static void
|
||||
ymfm_drv_generate(void *priv, int32_t *data, uint32_t num_samples)
|
||||
{
|
||||
YMFMChipBase *drv = (YMFMChipBase *) priv;
|
||||
|
||||
// drv->generate_resampled(data, 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",
|
||||
@@ -473,14 +626,255 @@ const device_t ymf278b_ymfm_device = {
|
||||
.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",
|
||||
.flags = 0,
|
||||
.local = FM_YM2151,
|
||||
.init = ymfm_drv_init,
|
||||
.close = ymfm_drv_close,
|
||||
.reset = NULL,
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
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",
|
||||
.flags = 0,
|
||||
.local = FM_YM2164,
|
||||
.init = ymfm_drv_init,
|
||||
.close = ymfm_drv_close,
|
||||
.reset = NULL,
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
};
|
||||
|
||||
const device_t ym3806_ymfm_device = {
|
||||
.name = "Yamaha YM3806 OPQ (YMFM)",
|
||||
.internal_name = "ym3806_ymfm",
|
||||
.flags = 0,
|
||||
.local = FM_YM3806,
|
||||
.init = ymfm_drv_init,
|
||||
.close = ymfm_drv_close,
|
||||
.reset = NULL,
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.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 {
|
||||
&ymfm_drv_read,
|
||||
&ymfm_drv_write,
|
||||
&ymfm_drv_update,
|
||||
&ymfm_drv_reset_buffer,
|
||||
&ymfm_drv_set_do_cycles,
|
||||
NULL,
|
||||
ymfm_drv_generate,
|
||||
.read = &ymfm_drv_read,
|
||||
.write = &ymfm_drv_write,
|
||||
.update = &ymfm_drv_update,
|
||||
.reset_buffer = &ymfm_drv_reset_buffer,
|
||||
.set_do_cycles = &ymfm_drv_set_do_cycles,
|
||||
.priv = NULL,
|
||||
.generate = ymfm_drv_generate,
|
||||
};
|
||||
|
||||
#ifdef __clang__
|
||||
|
||||
@@ -482,7 +482,7 @@ const device_t acermagic_s20_device = {
|
||||
.init = optimc_init,
|
||||
.close = optimc_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = optimc_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = optimc_config
|
||||
@@ -496,7 +496,7 @@ const device_t mirosound_pcm10_device = {
|
||||
.init = optimc_init,
|
||||
.close = optimc_close,
|
||||
.reset = NULL,
|
||||
{ .available = mirosound_pcm10_available },
|
||||
.available = mirosound_pcm10_available,
|
||||
.speed_changed = optimc_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = optimc_config
|
||||
|
||||
@@ -2428,7 +2428,7 @@ const device_t pasplus_device = {
|
||||
.init = pas16_init,
|
||||
.close = pas16_close,
|
||||
.reset = pas16_reset,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = pas16_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = pas16_config
|
||||
@@ -2442,7 +2442,7 @@ const device_t pas16_device = {
|
||||
.init = pas16_init,
|
||||
.close = pas16_close,
|
||||
.reset = pas16_reset,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = pas16_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = pas16_config
|
||||
@@ -2456,7 +2456,7 @@ const device_t pas16d_device = {
|
||||
.init = pas16_init,
|
||||
.close = pas16_close,
|
||||
.reset = pas16_reset,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = pas16_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = pas16_config
|
||||
|
||||
@@ -203,7 +203,7 @@ const device_t ps1snd_device = {
|
||||
.init = ps1snd_init,
|
||||
.close = ps1snd_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
|
||||
@@ -295,7 +295,7 @@ const device_t pssj_device = {
|
||||
.init = pssj_init,
|
||||
.close = pssj_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
@@ -309,7 +309,7 @@ const device_t pssj_1e0_device = {
|
||||
.init = pssj_1e0_init,
|
||||
.close = pssj_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
@@ -323,7 +323,7 @@ const device_t pssj_isa_device = {
|
||||
.init = pssj_isa_init,
|
||||
.close = pssj_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = pssj_isa_config
|
||||
|
||||
@@ -5525,7 +5525,7 @@ const device_t sb_1_device = {
|
||||
.init = sb_1_init,
|
||||
.close = sb_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = sb_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = sb_config
|
||||
@@ -5539,7 +5539,7 @@ const device_t sb_15_device = {
|
||||
.init = sb_15_init,
|
||||
.close = sb_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = sb_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = sb15_config
|
||||
@@ -5553,7 +5553,7 @@ const device_t sb_mcv_device = {
|
||||
.init = sb_mcv_init,
|
||||
.close = sb_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = sb_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = sb_mcv_config
|
||||
@@ -5567,7 +5567,7 @@ const device_t sb_2_device = {
|
||||
.init = sb_2_init,
|
||||
.close = sb_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = sb_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = sb2_config
|
||||
@@ -5581,7 +5581,7 @@ const device_t sb_pro_v1_device = {
|
||||
.init = sb_pro_v1_init,
|
||||
.close = sb_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = sb_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = sb_pro_config
|
||||
@@ -5595,7 +5595,7 @@ const device_t sb_pro_v2_device = {
|
||||
.init = sb_pro_v2_init,
|
||||
.close = sb_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = sb_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = sb_pro_config
|
||||
@@ -5609,7 +5609,7 @@ const device_t sb_pro_mcv_device = {
|
||||
.init = sb_pro_mcv_init,
|
||||
.close = sb_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = sb_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = sb_pro_mcv_config
|
||||
@@ -5623,7 +5623,7 @@ const device_t sb_pro_compat_device = {
|
||||
.init = sb_pro_compat_init,
|
||||
.close = sb_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = sb_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
@@ -5637,7 +5637,7 @@ const device_t sb_16_device = {
|
||||
.init = sb_16_init,
|
||||
.close = sb_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = sb_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = sb_16_config
|
||||
@@ -5651,7 +5651,7 @@ const device_t sb_vibra16s_onboard_device = {
|
||||
.init = sb_16_init,
|
||||
.close = sb_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = sb_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = sb_16_config
|
||||
@@ -5665,7 +5665,7 @@ const device_t sb_vibra16s_device = {
|
||||
.init = sb_16_init,
|
||||
.close = sb_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = sb_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = sb_16_config
|
||||
@@ -5679,7 +5679,7 @@ const device_t sb_vibra16xv_device = {
|
||||
.init = sb_vibra16_pnp_init,
|
||||
.close = sb_close,
|
||||
.reset = NULL,
|
||||
{ .available = sb_vibra16xv_available },
|
||||
.available = sb_vibra16xv_available,
|
||||
.speed_changed = sb_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = sb_16_pnp_config
|
||||
@@ -5693,7 +5693,7 @@ const device_t sb_vibra16c_onboard_device = {
|
||||
.init = sb_vibra16_pnp_init,
|
||||
.close = sb_close,
|
||||
.reset = NULL,
|
||||
{ .available = sb_vibra16c_available },
|
||||
.available = sb_vibra16c_available,
|
||||
.speed_changed = sb_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = sb_16_pnp_config
|
||||
@@ -5707,7 +5707,7 @@ const device_t sb_vibra16c_device = {
|
||||
.init = sb_vibra16_pnp_init,
|
||||
.close = sb_close,
|
||||
.reset = NULL,
|
||||
{ .available = sb_vibra16c_available },
|
||||
.available = sb_vibra16c_available,
|
||||
.speed_changed = sb_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = sb_16_pnp_config
|
||||
@@ -5721,7 +5721,7 @@ const device_t sb_16_reply_mca_device = {
|
||||
.init = sb_16_reply_mca_init,
|
||||
.close = sb_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = sb_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = sb_16_pnp_config
|
||||
@@ -5735,7 +5735,7 @@ const device_t sb_16_pnp_device = {
|
||||
.init = sb_16_pnp_init,
|
||||
.close = sb_close,
|
||||
.reset = NULL,
|
||||
{ .available = sb_16_pnp_available },
|
||||
.available = sb_16_pnp_available,
|
||||
.speed_changed = sb_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = sb_16_pnp_config
|
||||
@@ -5749,7 +5749,7 @@ const device_t sb_16_compat_device = {
|
||||
.init = sb_16_compat_init,
|
||||
.close = sb_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = sb_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
@@ -5763,7 +5763,7 @@ const device_t sb_16_compat_nompu_device = {
|
||||
.init = sb_16_compat_init,
|
||||
.close = sb_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = sb_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
@@ -5777,7 +5777,7 @@ const device_t sb_32_pnp_device = {
|
||||
.init = sb_awe32_pnp_init,
|
||||
.close = sb_awe32_close,
|
||||
.reset = NULL,
|
||||
{ .available = sb_32_pnp_available },
|
||||
.available = sb_32_pnp_available,
|
||||
.speed_changed = sb_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = sb_32_pnp_config
|
||||
@@ -5791,7 +5791,7 @@ const device_t sb_awe32_device = {
|
||||
.init = sb_awe32_init,
|
||||
.close = sb_awe32_close,
|
||||
.reset = NULL,
|
||||
{ .available = sb_awe32_available },
|
||||
.available = sb_awe32_available,
|
||||
.speed_changed = sb_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = sb_awe32_config
|
||||
@@ -5805,7 +5805,7 @@ const device_t sb_awe32_pnp_device = {
|
||||
.init = sb_awe32_pnp_init,
|
||||
.close = sb_awe32_close,
|
||||
.reset = NULL,
|
||||
{ .available = sb_awe32_pnp_available },
|
||||
.available = sb_awe32_pnp_available,
|
||||
.speed_changed = sb_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = sb_awe32_pnp_config
|
||||
@@ -5819,7 +5819,7 @@ const device_t sb_awe64_value_device = {
|
||||
.init = sb_awe32_pnp_init,
|
||||
.close = sb_awe32_close,
|
||||
.reset = NULL,
|
||||
{ .available = sb_awe64_value_available },
|
||||
.available = sb_awe64_value_available,
|
||||
.speed_changed = sb_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = sb_awe64_value_config
|
||||
@@ -5833,7 +5833,7 @@ const device_t sb_awe64_device = {
|
||||
.init = sb_awe32_pnp_init,
|
||||
.close = sb_awe32_close,
|
||||
.reset = NULL,
|
||||
{ .available = sb_awe64_available },
|
||||
.available = sb_awe64_available,
|
||||
.speed_changed = sb_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = sb_awe64_config
|
||||
@@ -5847,7 +5847,7 @@ const device_t sb_awe64_gold_device = {
|
||||
.init = sb_awe32_pnp_init,
|
||||
.close = sb_awe32_close,
|
||||
.reset = NULL,
|
||||
{ .available = sb_awe64_gold_available },
|
||||
.available = sb_awe64_gold_available,
|
||||
.speed_changed = sb_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = sb_awe64_gold_config
|
||||
@@ -5861,7 +5861,7 @@ const device_t ess_688_device = {
|
||||
.init = ess_x688_init,
|
||||
.close = sb_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = sb_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = ess_688_config
|
||||
@@ -5875,7 +5875,7 @@ const device_t ess_ess0100_pnp_device = {
|
||||
.init = ess_x688_pnp_init,
|
||||
.close = sb_close,
|
||||
.reset = NULL,
|
||||
{ .available = ess_688_pnp_available },
|
||||
.available = ess_688_pnp_available,
|
||||
.speed_changed = sb_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = ess_688_pnp_config
|
||||
@@ -5889,7 +5889,7 @@ const device_t ess_1688_device = {
|
||||
.init = ess_x688_init,
|
||||
.close = sb_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = sb_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = ess_1688_config
|
||||
@@ -5903,7 +5903,7 @@ const device_t ess_ess0102_pnp_device = {
|
||||
.init = ess_x688_pnp_init,
|
||||
.close = sb_close,
|
||||
.reset = NULL,
|
||||
{ .available = ess_1688_pnp_available },
|
||||
.available = ess_1688_pnp_available,
|
||||
.speed_changed = sb_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = ess_1688_pnp_config
|
||||
@@ -5917,7 +5917,7 @@ const device_t ess_ess0968_pnp_device = {
|
||||
.init = ess_x688_pnp_init,
|
||||
.close = sb_close,
|
||||
.reset = NULL,
|
||||
{ .available = ess_1688_968_pnp_available },
|
||||
.available = ess_1688_968_pnp_available,
|
||||
.speed_changed = sb_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = ess_1688_pnp_config
|
||||
@@ -5931,7 +5931,7 @@ const device_t ess_soundpiper_16_mca_device = {
|
||||
.init = ess_x688_mca_init,
|
||||
.close = sb_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = sb_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = ess_688_pnp_config
|
||||
@@ -5945,7 +5945,7 @@ const device_t ess_soundpiper_32_mca_device = {
|
||||
.init = ess_x688_mca_init,
|
||||
.close = sb_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = sb_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = ess_1688_pnp_config
|
||||
@@ -5959,7 +5959,7 @@ const device_t ess_chipchat_16_mca_device = {
|
||||
.init = ess_x688_mca_init,
|
||||
.close = sb_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = sb_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = ess_1688_pnp_config
|
||||
|
||||
@@ -318,7 +318,7 @@ const device_t sn76489_device = {
|
||||
.init = sn76489_device_init,
|
||||
.close = sn76489_device_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
@@ -332,7 +332,7 @@ const device_t ncr8496_device = {
|
||||
.init = ncr8496_device_init,
|
||||
.close = sn76489_device_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
@@ -346,7 +346,7 @@ const device_t tndy_device = {
|
||||
.init = tndy_device_init,
|
||||
.close = sn76489_device_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = tndy_config
|
||||
|
||||
@@ -186,7 +186,7 @@ const device_t ssi2001_device = {
|
||||
.init = ssi2001_init,
|
||||
.close = ssi2001_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = ssi2001_config
|
||||
@@ -200,7 +200,7 @@ const device_t entertainer_device = {
|
||||
.init = entertainer_init,
|
||||
.close = entertainer_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = NULL,
|
||||
.force_redraw = NULL,
|
||||
.config = entertainer_config
|
||||
|
||||
@@ -293,7 +293,7 @@ const device_t wss_device = {
|
||||
.init = wss_init,
|
||||
.close = wss_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = wss_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = wss_config
|
||||
@@ -307,7 +307,7 @@ const device_t ncr_business_audio_device = {
|
||||
.init = ncr_audio_init,
|
||||
.close = wss_close,
|
||||
.reset = NULL,
|
||||
{ .available = NULL },
|
||||
.available = NULL,
|
||||
.speed_changed = wss_speed_changed,
|
||||
.force_redraw = NULL,
|
||||
.config = NULL
|
||||
|
||||
@@ -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