#include "externals.h"\r
#include "registers.h"\r
#include "spu.h"\r
+#include "psemu_plugin_defs.h"\r
\r
////////////////////////////////////////////////////////////////////////\r
// freeze structs\r
ADSRInfoEx_orig ADSRX; // next ADSR settings (will be moved to active on sample start)\r
} SPUCHAN_orig;\r
\r
-typedef struct SPUFreeze\r
-{\r
- char szSPUName[8];\r
- uint32_t ulFreezeVersion;\r
- uint32_t ulFreezeSize;\r
- unsigned char cSPUPort[0x200];\r
- unsigned char cSPURam[0x80000];\r
- xa_decode_t xaS; \r
-} SPUFreeze_t;\r
-\r
typedef struct\r
{\r
unsigned short spuIrq;\r
if(ulFreezeMode==1) \r
memset(pF,0,sizeof(SPUFreeze_t)+sizeof(SPUOSSFreeze_t));\r
\r
- strcpy(pF->szSPUName,"PBOSS");\r
- pF->ulFreezeVersion=5;\r
- pF->ulFreezeSize=sizeof(SPUFreeze_t)+sizeof(SPUOSSFreeze_t);\r
+ strcpy(pF->PluginName, "PBOSS");\r
+ pF->PluginVersion = 5;\r
+ pF->Size = sizeof(SPUFreeze_t)+sizeof(SPUOSSFreeze_t);\r
\r
if(ulFreezeMode==2) return 1; // info mode? ok, bye\r
// save mode:\r
regAreaGet(H_SPUctrl) = spu.spuCtrl;\r
regAreaGet(H_SPUstat) = spu.spuStat;\r
- memcpy(pF->cSPURam,spu.spuMem,0x80000); // copy common infos\r
- memcpy(pF->cSPUPort,spu.regArea,0x200);\r
+ memcpy(pF->SPURam, spu.spuMem, 0x80000); // copy common infos\r
+ memcpy(pF->SPUPorts, spu.regArea, 0x200);\r
\r
if(spu.xapGlobal && spu.XAPlay!=spu.XAFeed) // some xa\r
{\r
xa_left = spu.XAFeed - spu.XAPlay;\r
if (xa_left < 0)\r
xa_left = spu.XAEnd - spu.XAPlay + spu.XAFeed - spu.XAStart;\r
- pF->xaS = *spu.xapGlobal;\r
+ pF->xa = *spu.xapGlobal;\r
}\r
else if (spu.CDDAPlay != spu.CDDAFeed)\r
{\r
cdda_left = spu.CDDAFeed - spu.CDDAPlay;\r
if (cdda_left < 0)\r
cdda_left = spu.CDDAEnd - spu.CDDAPlay + spu.CDDAFeed - spu.CDDAStart;\r
- if (cdda_left > sizeof(pF->xaS.pcm) / 4)\r
- cdda_left = sizeof(pF->xaS.pcm) / 4;\r
+ if (cdda_left > sizeof(pF->xa.pcm) / 4)\r
+ cdda_left = sizeof(pF->xa.pcm) / 4;\r
if (p + cdda_left <= spu.CDDAEnd)\r
- memcpy(pF->xaS.pcm, p, cdda_left * 4);\r
+ memcpy(pF->xa.pcm, p, cdda_left * 4);\r
else {\r
- memcpy(pF->xaS.pcm, p, (spu.CDDAEnd - p) * 4);\r
- memcpy((char *)pF->xaS.pcm + (spu.CDDAEnd - p) * 4, spu.CDDAStart,\r
+ memcpy(pF->xa.pcm, p, (spu.CDDAEnd - p) * 4);\r
+ memcpy((char *)pF->xa.pcm + (spu.CDDAEnd - p) * 4, spu.CDDAStart,\r
(cdda_left - (spu.CDDAEnd - p)) * 4);\r
}\r
- pF->xaS.nsamples = 0;\r
+ pF->xa.nsamples = 0;\r
}\r
else\r
- memset(&pF->xaS,0,sizeof(xa_decode_t)); // or clean xa\r
+ memset(&pF->xa, 0, sizeof(xa_decode_t)); // or clean xa\r
\r
pFO=(SPUOSSFreeze_t *)(pF+1); // store special stuff\r
\r
\r
if(ulFreezeMode!=0) return 0; // bad mode? bye\r
\r
- memcpy(spu.spuMem,pF->cSPURam,0x80000); // get ram\r
- memcpy(spu.regArea,pF->cSPUPort,0x200);\r
+ memcpy(spu.spuMem, pF->SPURam, 0x80000); // get ram\r
+ memcpy(spu.regArea, pF->SPUPorts, 0x200);\r
spu.bMemDirty = 1;\r
spu.spuCtrl = regAreaGet(H_SPUctrl);\r
spu.spuStat = regAreaGet(H_SPUstat);\r
\r
- if (!strcmp(pF->szSPUName,"PBOSS") && pF->ulFreezeVersion==5)\r
+ if (!strcmp(pF->PluginName, "PBOSS") && pF->PluginVersion == 5)\r
pFO = LoadStateV5(pF, cycles);\r
else LoadStateUnknown(pF, cycles);\r
\r
spu.XAPlay = spu.XAFeed = spu.XAStart;\r
spu.CDDAPlay = spu.CDDAFeed = spu.CDDAStart;\r
spu.cdClearSamples = 512;\r
- if (pFO && pFO->xa_left && pF->xaS.nsamples) { // start xa again\r
- FeedXA(&pF->xaS);\r
+ if (pFO && pFO->xa_left && pF->xa.nsamples) { // start xa again\r
+ FeedXA(&pF->xa);\r
spu.XAPlay = spu.XAFeed - pFO->xa_left;\r
if (spu.XAPlay < spu.XAStart)\r
spu.XAPlay = spu.XAStart;\r
}\r
else if (pFO && pFO->cdda_left) { // start cdda again\r
- FeedCDDA((void *)pF->xaS.pcm, pFO->cdda_left * 4);\r
+ FeedCDDA((void *)pF->xa.pcm, pFO->cdda_left * 4);\r
}\r
\r
// not in old savestates\r
spu.XALastVal = 0;\r
spu.last_keyon_cycles = cycles - 16*786u;\r
spu.interpolation = -1;\r
- if (pFO && pF->ulFreezeSize >= sizeof(*pF) + offsetof(SPUOSSFreeze_t, rvb_sb)) {\r
+ if (pFO && pF->Size >= sizeof(*pF) + offsetof(SPUOSSFreeze_t, rvb_sb)) {\r
spu.cycles_dma_end = pFO->cycles_dma_end;\r
spu.decode_dirty_ch = pFO->decode_dirty_ch;\r
spu.dwNoiseVal = pFO->dwNoiseVal;\r
spu.XALastVal = pFO->XALastVal;\r
spu.last_keyon_cycles = pFO->last_keyon_cycles;\r
}\r
- if (pFO && pF->ulFreezeSize >= sizeof(*pF) + sizeof(*pFO)) {\r
+ if (pFO && pF->Size >= sizeof(*pF) + sizeof(*pFO)) {\r
for (i = 0; i < 2; i++)\r
for (j = 0; j < 2; j++)\r
memcpy(&sb_rvb->SB_rvb[i][j*4], pFO->rvb_sb[i], 4 * sizeof(sb_rvb->SB_rvb[i][0]));\r
-/////////////////////////////////////////////////////////
-
-#define PSE_LT_SPU 4
-#define PSE_SPU_ERR_SUCCESS 0
-#define PSE_SPU_ERR -60
-#define PSE_SPU_ERR_NOTCONFIGURED PSE_SPU_ERR -1
-#define PSE_SPU_ERR_INIT PSE_SPU_ERR -2
-
/////////////////////////////////////////////////////////
// main emu calls:
// 0. Get type/name/version
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#include "xa.h"
#include "register.h"
+#include "../../include/psemu_plugin_defs.h"
// some ms windows compatibility define
#undef CALLBACK
#define CALLBACK
////////////////////////////////////////////////////////////////////////\r
-typedef struct\r
-{
- char szSPUName[8];
- unsigned long ulFreezeVersion;
- unsigned long ulFreezeSize;
- unsigned char cSPUPort[0x200];
- unsigned char cSPURam[0x80000];
- xa_decode_t xaS;
-} SPUFreeze_t;
-
typedef struct
{
unsigned long Future[256];
if(ulFreezeMode==1)
memset(pF,0,sizeof(SPUFreeze_t)+sizeof(SPUNULLFreeze_t));
- strcpy(pF->szSPUName,"PBNUL");
- pF->ulFreezeVersion=1;
- pF->ulFreezeSize=sizeof(SPUFreeze_t)+sizeof(SPUNULLFreeze_t);
+ strcpy(pF->PluginName, "PBNUL");
+ pF->PluginVersion = 1;
+ pF->Size = sizeof(SPUFreeze_t)+sizeof(SPUNULLFreeze_t);
if(ulFreezeMode==2) return 1;
- memcpy(pF->cSPURam,spuMem,0x80000);
- memcpy(pF->cSPUPort,regArea,0x200);
+ memcpy(pF->SPURam, spuMem, 0x80000);
+ memcpy(pF->SPUPorts, regArea, 0x200);
// dummy:
- memset(&pF->xaS,0,sizeof(xa_decode_t));
+ memset(&pF->xa, 0, sizeof(xa_decode_t));
return 1;
}
if(ulFreezeMode!=0) return 0;
- memcpy(spuMem,pF->cSPURam,0x80000);
- memcpy(regArea,pF->cSPUPort,0x200);
+ memcpy(spuMem, pF->SPURam, 0x80000);
+ memcpy(regArea, pF->SPUPorts, 0x200);
for(i=0;i<0x100;i++)
{