Mercurial > hg > xmms-sid
changeset 692:0126579b6652
Actually compiles now with libsidplay2 COM API, but does not work yet.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Thu, 22 May 2008 09:22:49 +0300 |
parents | c21908e9e7d7 |
children | 56514f717cc3 |
files | src/xs_sidplay2.cc |
diffstat | 1 files changed, 40 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- 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 <sidplay/sidplay2.h> +#ifdef HAVE_SIDPLAY2_COMI +# include <sidplay/sidlazyiptr.h> +#endif #ifdef HAVE_RESID_BUILDER -#include <sidplay/builders/resid.h> +# include <sidplay/builders/resid.h> #endif #ifdef HAVE_HARDSID_BUILDER -#include <sidplay/builders/hardsid.h> +# include <sidplay/builders/hardsid.h> #endif - typedef struct { +#ifdef HAVE_SIDPLAY2_COMI + SidIPtr<ISidplay2> currEng; + SidLazyIPtr<ISidUnknown> 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<IReSIDBuilder> 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<IReSIDBuilder> 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;