# HG changeset patch # User Matti Hamalainen # Date 1211437369 -10800 # Node ID 0126579b665218bb898693d2d58fa32f64124b76 # Parent c21908e9e7d7c2316c60d3b4975c064eae6fad47 Actually compiles now with libsidplay2 COM API, but does not work yet. diff -r c21908e9e7d7 -r 0126579b6652 src/xs_sidplay2.cc --- a/src/xs_sidplay2.cc Thu May 22 09:22:31 2008 +0300 +++ b/src/xs_sidplay2.cc Thu May 22 09:22:49 2008 +0300 @@ -30,17 +30,24 @@ #include +#ifdef HAVE_SIDPLAY2_COMI +# include +#endif #ifdef HAVE_RESID_BUILDER -#include +# include #endif #ifdef HAVE_HARDSID_BUILDER -#include +# include #endif - typedef struct { +#ifdef HAVE_SIDPLAY2_COMI + SidIPtr currEng; + SidLazyIPtr currBuilder; +#else sidplay2 *currEng; sidbuilder *currBuilder; +#endif sid2_config_t currConfig; SidTune *currTune; guint8 *buf; @@ -54,11 +61,11 @@ /* Return song information */ -#define TFUNCTION xs_sidplay2_getinfo -#define TFUNCTION2 xs_sidplay2_updateinfo -#define TTUNEINFO SidTuneInfo -#define TTUNE SidTune -#define TENGINE xs_sidplay2_t +#define TFUNCTION xs_sidplay2_getinfo +#define TFUNCTION2 xs_sidplay2_updateinfo +#define TTUNEINFO SidTuneInfo +#define TTUNE SidTune +#define TENGINE xs_sidplay2_t #include "xs_sidplay.h" @@ -96,7 +103,11 @@ if (!myEngine) return FALSE; /* Initialize the engine */ +#ifdef HAVE_SIDPLAY2_COMI +// myEngine->currEng(); +#else myEngine->currEng = new sidplay2; +#endif if (!myEngine->currEng) { xs_error("[SIDPlay2] Could not initialize emulation engine.\n"); return FALSE; @@ -228,9 +239,16 @@ XSDEBUG("init builder #%i, maxsids=%i\n", xs_cfg.sid2Builder, (myEngine->currEng->info()).maxsids); #ifdef HAVE_RESID_BUILDER if (xs_cfg.sid2Builder == XS_BLD_RESID) { +#ifdef HAVE_SIDPLAY2_COMI + myEngine->currBuilder = ReSIDBuilderCreate(""); + SidLazyIPtr rs(myEngine->currBuilder); + if (rs) { + myEngine->currConfig.sidEmulation = rs->iaggregate(); +#else ReSIDBuilder *rs = new ReSIDBuilder("ReSID builder"); myEngine->currBuilder = (sidbuilder *) rs; if (rs) { +#endif /* Builder object created, initialize it */ rs->create((myEngine->currEng->info()).maxsids); if (!*rs) { @@ -266,9 +284,16 @@ #endif #ifdef HAVE_HARDSID_BUILDER if (xs_cfg.sid2Builder == XS_BLD_HARDSID) { +#ifdef HAVE_SIDPLAY2_COMI + myEngine->currBuilder = HardSIDBuilderCreate(""); + SidLazyIPtr hs(myEngine->currBuilder); + if (hs) { + myEngine->currConfig.sidEmulation = hs->iaggregate(); +#else HardSIDBuilder *hs = new HardSIDBuilder("HardSID builder"); myEngine->currBuilder = (sidbuilder *) hs; if (hs) { +#endif /* Builder object created, initialize it */ hs->create((myEngine->currEng->info()).maxsids); if (!*hs) { @@ -290,8 +315,10 @@ return FALSE; } +#ifndef HAVE_SIDPLAY2_COMI + myEngine->currConfig.sidEmulation = myEngine->currBuilder; XSDEBUG("%s\n", myEngine->currBuilder->credits()); - +#endif /* Clockspeed settings */ switch (xs_cfg.clockSpeed) { @@ -311,7 +338,6 @@ /* Configure rest of the emulation */ - myEngine->currConfig.sidEmulation = myEngine->currBuilder; if (xs_cfg.forceSpeed) { myEngine->currConfig.clockForced = true; @@ -374,14 +400,18 @@ /* Free internals */ if (myEngine->currBuilder) { +#ifndef HAVE_SIDPLAY2_COMI delete myEngine->currBuilder; +#endif myEngine->currBuilder = NULL; } +#ifndef HAVE_SIDPLAY2_COMI if (myEngine->currEng) { delete myEngine->currEng; myEngine->currEng = NULL; } +#endif if (myEngine->currTune) { delete myEngine->currTune;