# HG changeset patch # User Matti Hamalainen # Date 1056071523 0 # Node ID 90cd38b28a7249ce60b7458055451ce236c63269 # Parent 3c609b6d5a028271584430b038cbaf0a1ad6e275 Various fixes and transmogrifying for dual emulation engine environment diff -r 3c609b6d5a02 -r 90cd38b28a72 src/xmms-sid.cc --- a/src/xmms-sid.cc Fri Jun 20 01:12:00 2003 +0000 +++ b/src/xmms-sid.cc Fri Jun 20 01:12:03 2003 +0000 @@ -54,10 +54,14 @@ static struct emuConfig xs_emuConf; static emuEngine xs_emuEngine; typedef sidTune t_xs_tune; +typedef struct sidTuneInfo t_xs_tuneinfo; #endif #ifdef HAVE_SIDPLAY2 +static struct sid2_config_t xs_emuConf; static sidplay2 xs_emuEngine; +typedef SidTune t_xs_tune; +typedef struct SidTuneInfo t_xs_tuneinfo; #endif static GtkWidget *xs_ctrlwin = NULL; @@ -234,7 +238,7 @@ void xs_play_file(char *fileName) { t_xs_tune *newTune; - struct sidTuneInfo sidInf; + t_xs_tuneinfo sidInf; XSDEBUG("request to load '%s'\n", fileName); @@ -252,16 +256,16 @@ /* Try to get the tune */ - newTune = new sidTune(fileName); + newTune = new t_xs_tune(fileName); if (newTune == NULL) return; XSDEBUG("tune ok, configuring SIDPlay engine\n"); +#ifdef HAVE_SIDPLAY1 /* Get current configuration */ xs_emuEngine.getConfig(xs_emuConf); - /* Configure channels and stuff */ switch (xs_cfg.fmtChannels) { @@ -338,17 +342,99 @@ xs_emuConf.filterFm = xs_cfg.filterFm; xs_emuConf.filterFt = xs_cfg.filterFt; - XSDEBUG("configuring engine..\n"); + /* Now set the emulator configuration */ + xs_emuEngine.setConfig(xs_emuConf); +#endif + + + +#ifdef HAVE_SIDPLAY2 + /* Get current configuration */ + xs_emuConf = xs_emuEngine.config(); + + /* Configure channels and stuff */ + switch (xs_cfg.fmtChannels) { + + case XS_CHN_AUTOPAN: + xs_emuConf.playback = sid2_stereo; + break; + + case XS_CHN_STEREO: + xs_emuConf.playback = sid2_stereo; + break; + + case XS_CHN_MONO: + xs_emuConf.playback = sid2_mono; + break; + + default: + XSERR("Internal: Invalid channels setting. Possibly corrupted configuration file.\n"); + delete newTune; + return; + } + /* Memory mode settings */ + switch (xs_cfg.memoryMode) { + case XS_MPU_BANK_SWITCHING: + xs_emuConf.environment = sid2_envBS; + break; + + case XS_MPU_TRANSPARENT_ROM: + xs_emuConf.environment = sid2_envTP; + break; + + case XS_MPU_PLAYSID_ENVIRONMENT: + xs_emuConf.environment = sid2_envPS; + break; + + case XS_MPU_REAL: + xs_emuConf.environment = sid2_envR; + break; + + default: + XSERR("Internal: Invalid memoryMode setting. Possibly corrupted configuration file.\n"); + delete newTune; + return; + } + + + /* Clockspeed settings */ + switch (xs_cfg.clockSpeed) { + case XS_CLOCK_PAL: + xs_emuConf.clockSpeed = xs_emuConf.clockDefault = SID2_CLOCK_PAL; + break; + + case XS_CLOCK_NTSC: + xs_emuConf.clockSpeed = xs_emuConf.clockDefault = SID2_CLOCK_NTSC; + break; + + default: + XSERR("Internal: Invalid clockSpeed setting. Possibly corrupted configuration file.\n"); + delete newTune; + return; + } + + + /* Configure rest of the emulation */ + xs_emuConf.precision = audio.precision; + xs_emuConf.frequency = xs_cfg.fmtFrequency; + xs_emuConf.clockForced = xs_cfg.forceSpeed; + xs_emuConf.optimisation = xs_cfg.optimiseLevel; + xs_emuConf.sidModel = (xs_cfg.mos8580) ? SID2_MOS8580 : SID2_MOS6581; + xs_emuConf.sidDefault = SID2_MOS6581; + xs_emuConf.sidSamples = emulation.sidSamples; + /* Now set the emulator configuration */ - xs_emuEngine.setConfig(xs_emuConf); - newTune->getInfo(sidInf); + xs_emuEngine.config(xs_emuConf); +#endif /* Initialize status information */ XSDEBUG("initializing and starting playing thread!\n"); + newTune->getInfo(sidInf); + xs_status.isError = FALSE; xs_status.isPlaying = TRUE; xs_status.allowNext = TRUE; @@ -445,7 +531,7 @@ */ void xs_get_song_info(char *songFilename, char **songTitle, int *songLength) { - struct sidTuneInfo sidInf; + t_xs_tuneinfo sidInf; t_xs_tune *testTune = new sidTune(songFilename); /* Check if the tune exists and is readable */ @@ -476,7 +562,7 @@ { gint i, j, iLength; gchar *pcResult; - struct sidTuneInfo *finfo = (struct sidTuneInfo *) pfInfo; + t_xs_tuneinfo *finfo = (t_xs_tuneinfo *) pfInfo; #ifdef HAVE_XMMSEXTRA TitleInput *ptInput; #endif diff -r 3c609b6d5a02 -r 90cd38b28a72 src/xs_config.c --- a/src/xs_config.c Fri Jun 20 01:12:00 2003 +0000 +++ b/src/xs_config.c Fri Jun 20 01:12:03 2003 +0000 @@ -40,9 +40,9 @@ * Configuration specific stuff */ t_xs_cfg_item xs_cfgtable[] = { - {ATYPE_INT, &xs_cfg.fmtBitsPerSample,"bitsPerSample"}, - {ATYPE_INT, &xs_cfg.fmtChannels, "channels"}, - {ATYPE_INT, &xs_cfg.fmtFrequency, "frequency"}, + {ATYPE_INT, &xs_cfg.fmtBitsPerSample,"fmtBitsPerSample"}, + {ATYPE_INT, &xs_cfg.fmtChannels, "fmtChannels"}, + {ATYPE_INT, &xs_cfg.fmtFrequency, "fmtFrequency"}, {ATYPE_BOOL, &xs_cfg.mos8580, "mos8580"}, {ATYPE_BOOL, &xs_cfg.emulateFilters, "emulateFilters"}, @@ -61,13 +61,13 @@ {ATYPE_BOOL, &xs_cfg.songlenDBEnable,"songlenDBEnable"}, {ATYPE_STR, &xs_cfg.songlenDBPath, "songlenDBPath"}, - {ATYPE_BOOL, &xs_cfg.stilDBEnable, "useSTIL"}, - {ATYPE_STR, &xs_cfg.stilDBPath, "STILpath"}, + {ATYPE_BOOL, &xs_cfg.stilDBEnable, "stilDBEnable"}, + {ATYPE_STR, &xs_cfg.stilDBPath, "stilDBPath"}, {ATYPE_BOOL, &xs_cfg.detectMagic, "detectMagic"}, {ATYPE_BOOL, &xs_cfg.titleOverride, "titleOverride"}, - {ATYPE_STR, &xs_cfg.titleFormat, "fileInfo"} + {ATYPE_STR, &xs_cfg.titleFormat, "titleFormat"} }; const gint XS_CFGTABLE_MAX = (sizeof(xs_cfgtable) / sizeof(t_xs_cfg_item)); @@ -106,7 +106,13 @@ xs_cfg.mos8580 = FALSE; xs_cfg.emulateFilters = TRUE; xs_reset_filters(); + +#ifdef HAVE_SIDPLAY2 + xs_cfg.memoryMode = XS_MPU_REAL; +#else xs_cfg.memoryMode = XS_MPU_BANK_SWITCHING; +#endif + xs_cfg.clockSpeed = XS_CLOCK_PAL; xs_cfg.forceSpeed = FALSE; diff -r 3c609b6d5a02 -r 90cd38b28a72 src/xs_config.h --- a/src/xs_config.h Fri Jun 20 01:12:00 2003 +0000 +++ b/src/xs_config.h Fri Jun 20 01:12:03 2003 +0000 @@ -45,7 +45,8 @@ enum XS_MPU { XS_MPU_BANK_SWITCHING = 1, XS_MPU_TRANSPARENT_ROM, - XS_MPU_PLAYSID_ENVIRONMENT + XS_MPU_PLAYSID_ENVIRONMENT, + XS_MPU_REAL };