LIBDL :=
LIBM :=
+#Raspberry Pi 1
+else ifeq ($(platform), rpi1)
+ TARGET := $(TARGET_NAME)_libretro.so
+ fpic := -fPIC
+ CFLAGS += -marm -mcpu=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard
+ ASFLAGS += -mcpu=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard
+ HAVE_NEON = 0
+ ARCH = arm
+ BUILTIN_GPU = unai
+ DYNAREC = ari64
+
#Raspberry Pi 2
else ifeq ($(platform), rpi2)
TARGET := $(TARGET_NAME)_libretro.so
int ret = xa_decode_sector(&cdr.Xa, cdr.Transfer+4, cdr.FirstSector);
if (!ret) {
cdrAttenuate(cdr.Xa.pcm, cdr.Xa.nsamples, cdr.Xa.stereo);
+ /*
+ * Gameblabla -
+ * This is a hack for Megaman X4, Castlevania etc...
+ * that regressed from the new m_locationChanged and CDROM timings changes.
+ * It is mostly noticeable in Castevania however and the stuttering can be very jarring.
+ *
+ * According to PCSX redux authors, we shouldn't cause a location change if
+ * the sector difference is too small.
+ * I attempted to go with that approach but came empty handed.
+ * So for now, let's just set cdr.m_locationChanged to false when playing back any ADPCM samples.
+ * This does not regress Crash Team Racing's intro at least.
+ */
+ cdr.m_locationChanged = FALSE;
SPU_playADPCMchannel(&cdr.Xa);
cdr.FirstSector = 0;
}
short * pS;\r
\r
void (CALLBACK *irqCallback)(void); // func of main emu, called on spu irq\r
- void (CALLBACK *cddavCallback)(unsigned short,unsigned short);\r
+ void (CALLBACK *cddavCallback)(short, short);\r
void (CALLBACK *scheduleCallback)(unsigned int);\r
\r
xa_decode_t * xapGlobal;\r
break;\r
//-------------------------------------------------//\r
case H_CDLeft:\r
- spu.iLeftXAVol=val & 0x7fff;\r
- if(spu.cddavCallback) spu.cddavCallback(0,val);\r
+ spu.iLeftXAVol=(int16_t)val;\r
+ if(spu.cddavCallback) spu.cddavCallback(0,(int16_t)val);\r
break;\r
case H_CDRight:\r
- spu.iRightXAVol=val & 0x7fff;\r
- if(spu.cddavCallback) spu.cddavCallback(1,val);\r
+ spu.iRightXAVol=(int16_t)val;\r
+ if(spu.cddavCallback) spu.cddavCallback(1,(int16_t)val);\r
break;\r
//-------------------------------------------------//\r
case H_FMod1:\r
spu.irqCallback = callback;
}
-void CALLBACK SPUregisterCDDAVolume(void (CALLBACK *CDDAVcallback)(unsigned short,unsigned short))
+void CALLBACK SPUregisterCDDAVolume(void (CALLBACK *CDDAVcallback)(short, short))
{
spu.cddavCallback = CDDAVcallback;
}
////////////////////////////////////////////////////////////////////////
void (CALLBACK *irqCallback)(void)=0; // func of main emu, called on spu irq
-void (CALLBACK *cddavCallback)(unsigned short,unsigned short)=0;
+void (CALLBACK *cddavCallback)(short, short)=0;
////////////////////////////////////////////////////////////////////////
// CODE AREA
irqCallback = callback;
}
-void CALLBACK SPUregisterCDDAVolume(void (CALLBACK *CDDAVcallback)(unsigned short,unsigned short))
+void CALLBACK SPUregisterCDDAVolume(void (CALLBACK *CDDAVcallback)(short, short))
{
cddavCallback = CDDAVcallback;
}