Initial Flexibility to set SID type

This commit is contained in:
Jasmine Iwanek
2024-12-12 14:29:51 -05:00
parent 5a6b5b3692
commit 461e59f4a5
3 changed files with 10 additions and 4 deletions

View File

@@ -4,7 +4,7 @@
#ifdef __cplusplus
extern "C" {
#endif
void *sid_init(void);
void *sid_init(uint8_t type);
void sid_close(void *priv);
void sid_reset(void *priv);
uint8_t sid_read(uint16_t addr, void *priv);

View File

@@ -20,7 +20,7 @@ typedef struct psid_t {
psid_t *psid;
void *
sid_init(void)
sid_init(uint8_t type)
{
reSIDfp::SamplingMethod method = reSIDfp::RESAMPLE;
float cycles_per_sec = 14318180.0 / 16.0;
@@ -28,7 +28,13 @@ sid_init(void)
psid = new psid_t;
psid->sid = new SID;
psid->sid->setChipModel(reSIDfp::MOS6581);
switch (type) {
default:
case 0:
psid->sid->setChipModel(reSIDfp::MOS6581);
case 1:
psid->sid->setChipModel(reSIDfp::MOS8580);
}
psid->sid->reset();

View File

@@ -69,7 +69,7 @@ ssi2001_init(UNUSED(const device_t *info))
ssi2001_t *ssi2001 = malloc(sizeof(ssi2001_t));
memset(ssi2001, 0, sizeof(ssi2001_t));
ssi2001->psid = sid_init();
ssi2001->psid = sid_init(0);
sid_reset(ssi2001->psid);
uint16_t addr = device_get_config_hex16("base");
ssi2001->gameport_enabled = device_get_config_int("gameport");