This is an automated email from the git hooks/post-receive script. ecsv-guest pushed a commit to branch armhf_test in repository mupen64plus-rsp-hle.
commit cb09983d0b5b3aa801ef2e1865b55609ee9a7315 Author: Sven Eckelmann <[email protected]> Date: Sun Aug 28 18:47:23 2011 +0200 Imported Upstream version 1.99.5~hg20110828 --- projects/unix/Makefile | 138 +++++++++++++++------------ src/hle.h | 6 +- src/jpeg.c | 1 + src/main.c | 6 +- src/ucode1.cpp | 18 ++-- src/ucode2.cpp | 21 ++-- src/ucode3.cpp | 254 ++----------------------------------------------- 7 files changed, 115 insertions(+), 329 deletions(-) diff --git a/projects/unix/Makefile b/projects/unix/Makefile index d7b6a1c..7854963 100644 --- a/projects/unix/Makefile +++ b/projects/unix/Makefile @@ -49,6 +49,12 @@ ifeq ("$(UNAME)","FreeBSD") SO_EXTENSION = so SHARED = -shared endif +ifeq ("$(UNAME)","OpenBSD") + OS = FREEBSD + SO_EXTENSION = so + SHARED = -shared + $(warning OS type "$(UNAME)" not officially supported.') +endif ifneq ("$(filter GNU/kFreeBSD kfreebsd,$(UNAME))","") OS = LINUX SO_EXTENSION = so @@ -66,56 +72,65 @@ ifneq ("$(filter x86_64 amd64,$(HOST_CPU))","") CPU := X86 ifeq ("$(BITS)", "32") ARCH_DETECTED := 64BITS_32 + PIC ?= 0 else ARCH_DETECTED := 64BITS + PIC ?= 1 endif endif ifneq ("$(filter pentium i%86,$(HOST_CPU))","") CPU := X86 ARCH_DETECTED := 32BITS + PIC ?= 0 +endif +ifneq ("$(filter ppc powerpc,$(HOST_CPU))","") + CPU := PPC + ARCH_DETECTED := 32BITS + BIG_ENDIAN := 1 + PIC ?= 1 + $(warning Architecture "$(HOST_CPU)" not officially supported.') +endif +ifneq ("$(filter ppc64 powerpc64,$(HOST_CPU))","") + CPU := PPC + ARCH_DETECTED := 64BITS + BIG_ENDIAN := 1 + PIC ?= 1 + $(warning Architecture "$(HOST_CPU)" not officially supported.') endif -# PPC doesn't work yet -#ifneq ("$(filter ppc powerpc,$(HOST_CPU))","") -# CPU := PPC -# ARCH_DETECTED := 32BITS -#endif -#ifneq ("$(filter ppc64 powerpc64,$(HOST_CPU))","") -# CPU := PPC -# ARCH_DETECTED := 64BITS -#endif ifeq ("$(CPU)","NONE") $(error CPU type "$(HOST_CPU)" not supported. Please file bug report at 'http://code.google.com/p/mupen64plus/issues') endif -# base CFLAGS, LIBS, and LDFLAGS -CFLAGS += -ffast-math -funroll-loops -fexpensive-optimizations -fno-strict-aliasing -fvisibility=hidden -I../../src +# base CFLAGS, LDLIBS, and LDFLAGS +OPTFLAGS ?= -O3 +CFLAGS += $(OPTFLAGS) -ffast-math -fno-strict-aliasing -fvisibility=hidden -I../../src CXXFLAGS += -fvisibility-inlines-hidden +LDFLAGS += $(SHARED) -# Since we are building a shared library, we must compile with -fPIC for x86_64 CPUs. -# On 32-bit systems we do not want to use -fPIC because we don't have to and it has a big performance penalty on this arch -ifeq ($(ARCH_DETECTED), 64BITS) - CFLAGS += -fPIC -DPIC +# Since we are building a shared library, we must compile with -fPIC on some architectures +# On 32-bit x86 systems we do not want to use -fPIC because we don't have to and it has a big performance penalty on this arch +ifeq ($(PIC), 1) + CFLAGS += -fPIC + LDFLAGS += -fPIC endif + +ifeq ($(BIG_ENDIAN), 1) + CFLAGS += -DM64P_BIG_ENDIAN +endif + # tweak flags for 32-bit build on 64-bit system ifeq ($(ARCH_DETECTED), 64BITS_32) ifeq ($(OS), FREEBSD) $(error Do not use the BITS=32 option with FreeBSD, use -m32 and -m elf_i386) endif CFLAGS += -m32 - LDFLAGS += -m32 -m elf_i386 + LDFLAGS += -m32 -Wl,-m,elf_i386 endif # set special flags per-system ifeq ($(OS), LINUX) # only export api symbols LDFLAGS += -Wl,-version-script,$(SRCDIR)/rsp_api_export.ver - ifeq ($(CPU), X86) - ifeq ($(ARCH_DETECTED), 64BITS) - CFLAGS += -pipe -O3 -march=athlon64 - else - CFLAGS += -pipe -O3 -mmmx -msse -march=i686 -mtune=pentium-m -fomit-frame-pointer - endif - endif endif ifeq ($(OS), OSX) ifeq ($(CPU), X86) @@ -128,9 +143,6 @@ ifeq ($(OS), OSX) endif endif endif -ifeq ($(CPU), PPC) - CFLAGS += -mcpu=powerpc -endif # set mupen64plus core API header path ifneq ("$(APIDIR)","") @@ -154,20 +166,31 @@ else endif endif -# set shell function names -CC ?= gcc -CXX ?= g++ -INSTALL ?= install -ifeq ($(OS),OSX) - STRIP ?= strip -x -else - STRIP ?= strip -s +# reduced compile output when running make without V=1 +ifneq ($(findstring $(MAKEFLAGS),s),s) +ifndef V + Q_CC = @echo ' CC '$@; + Q_CXX = @echo ' CXX '$@; + Q_LD = @echo ' LD '$@; endif +endif + +# set base program pointers and flags +CC ?= gcc +CXX ?= g++ +RM ?= rm -f +INSTALL ?= install +MKDIR ?= mkdir -p +COMPILE.c = $(Q_CC)$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c +COMPILE.cc = $(Q_CXX)$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c +LINK.o = $(Q_LD)$(CXX) $(LDFLAGS) $(TARGET_ARCH) # set special flags for given Makefile parameters ifeq ($(DEBUG),1) CFLAGS += -g - STRIP = true # disable binary strip + INSTALL_STRIP_FLAG ?= +else + INSTALL_STRIP_FLAG ?= -s endif # set installation options @@ -175,7 +198,10 @@ ifeq ($(PREFIX),) PREFIX := /usr/local endif ifeq ($(LIBDIR),) - LIBDIR := $(PREFIX)/lib/mupen64plus + LIBDIR := $(PREFIX)/lib +endif +ifeq ($(PLUGINDIR),) + PLUGINDIR := $(LIBDIR)/mupen64plus endif SRCDIR = ../../src @@ -194,7 +220,7 @@ SOURCE = \ OBJECTS := $(patsubst $(SRCDIR)/%.c, $(OBJDIR)/%.o, $(filter %.c, $(SOURCE))) OBJECTS += $(patsubst $(SRCDIR)/%.cpp, $(OBJDIR)/%.o, $(filter %.cpp, $(SOURCE))) OBJDIRS = $(dir $(OBJECTS)) -$(shell mkdir -p $(OBJDIRS)) +$(shell $(MKDIR) $(OBJDIRS)) # build targets TARGET = mupen64plus-rsp-hle.$(SO_EXTENSION) @@ -210,25 +236,28 @@ targets: @echo " Options:" @echo " BITS=32 == build 32-bit binaries on 64-bit machine" @echo " APIDIR=path == path to find Mupen64Plus Core headers" + @echo " OPTFLAGS=flag == compiler optimization (default: -O3)" + @echo " PIC=(1|0) == Force enable/disable of position independent code" @echo " Install Options:" @echo " PREFIX=path == install/uninstall prefix (default: /usr/local)" - @echo " LIBDIR=path == path to install plugin libraries (default: PREFIX/lib/mupen64plus)" + @echo " LIBDIR=path == library prefix (default: PREFIX/lib)" + @echo " PLUGINDIR=path == path to install plugin libraries (default: LIBDIR/mupen64plus)" @echo " DESTDIR=path == path to prepend to all installation paths (only for packagers)" @echo " Debugging Options:" @echo " DEBUG=1 == add debugging symbols" + @echo " V=1 == show verbose compiler output" all: $(TARGET) install: $(TARGET) - $(INSTALL) -d -v "$(DESTDIR)$(LIBDIR)" - $(INSTALL) -m 0644 $(TARGET) "$(DESTDIR)$(LIBDIR)" + $(INSTALL) -d "$(DESTDIR)$(PLUGINDIR)" + $(INSTALL) -m 0644 $(INSTALL_STRIP_FLAG) $(TARGET) "$(DESTDIR)$(PLUGINDIR)" uninstall: - rm -f "$(DESTDIR)$(LIBDIR)/$(TARGET)" + $(RM) "$(DESTDIR)$(PLUGINDIR)/$(TARGET)" clean: - rm -rf ./_obj/* $(TARGET) - rmdir ./_obj + $(RM) -r ./_obj $(TARGET) rebuild: clean all @@ -238,23 +267,14 @@ CFLAGS += -MD CXXFLAGS += $(CFLAGS) -# reduced compile output when running make without V=1 -ifneq ($(findstring $(MAKEFLAGS),s),s) -ifndef V - Q_CC = @echo ' CC '$@; - Q_CXX = @echo ' CXX '$@; - Q_LD = @echo ' LD '$@; -endif -endif +# standard build rules +$(OBJDIR)/%.o: $(SRCDIR)/%.c + $(COMPILE.c) -o $@ $< -# build rules +$(OBJDIR)/%.o: $(SRCDIR)/%.cpp + $(COMPILE.cc) -o $@ $< $(TARGET): $(OBJECTS) - $(Q_LD)$(CXX) $(SHARED) $^ $(LDFLAGS) -o $@ - $(STRIP) $@ + $(LINK.o) $^ $(LOADLIBES) $(LDLIBS) -o $@ -$(OBJDIR)/%.o: $(SRCDIR)/%.c - $(Q_CC)$(CC) -o $@ $(CFLAGS) -c $< - -$(OBJDIR)/%.o: $(SRCDIR)/%.cpp - $(Q_CXX)$(CXX) -o $@ $(CXXFLAGS) -c $< +.PHONY: all clean install uninstall targets diff --git a/src/hle.h b/src/hle.h index 82fb090..e2d8ecf 100644 --- a/src/hle.h +++ b/src/hle.h @@ -22,11 +22,13 @@ #ifndef HLE_H #define HLE_H +#define M64P_PLUGIN_PROTOTYPES 1 #include "m64p_plugin.h" -#define RSP_HLE_VERSION 0x016304 +#define RSP_HLE_VERSION 0x016304 +#define RSP_PLUGIN_API_VERSION 0x020000 -#ifdef _BIG_ENDIAN +#ifdef M64P_BIG_ENDIAN #define S 0 #define S16 0 #define S8 0 diff --git a/src/jpeg.c b/src/jpeg.c index dd9a4fe..9363f30 100644 --- a/src/jpeg.c +++ b/src/jpeg.c @@ -24,6 +24,7 @@ #include <stdlib.h> #include <stdio.h> +#define M64P_PLUGIN_PROTOTYPES 1 #include "m64p_types.h" #include "m64p_plugin.h" #include "hle.h" diff --git a/src/main.c b/src/main.c index 536bcd4..eef6fe7 100644 --- a/src/main.c +++ b/src/main.c @@ -24,7 +24,9 @@ #include <string.h> #include <stdio.h> +#define M64P_PLUGIN_PROTOTYPES 1 #include "m64p_types.h" +#include "m64p_common.h" #include "m64p_plugin.h" #include "hle.h" @@ -60,7 +62,7 @@ extern void (*ABI1[0x20])(); extern void (*ABI2[0x20])(); extern void (*ABI3[0x20])(); -void (*ABI[0x20])(); +static void (*ABI[0x20])(); u32 inst1, inst2; @@ -156,7 +158,7 @@ EXPORT m64p_error CALL PluginGetVersion(m64p_plugin_type *PluginType, int *Plugi *PluginVersion = RSP_HLE_VERSION; if (APIVersion != NULL) - *APIVersion = PLUGIN_API_VERSION; + *APIVersion = RSP_PLUGIN_API_VERSION; if (PluginNamePtr != NULL) *PluginNamePtr = "Hacktarux/Azimer High-Level Emulation RSP Plugin"; diff --git a/src/ucode1.cpp b/src/ucode1.cpp index 0c0ad75..7d0c40f 100644 --- a/src/ucode1.cpp +++ b/src/ucode1.cpp @@ -825,17 +825,17 @@ static void LOADADPCM (void) { // Loads an ADPCM table - Works 100% Now 03-13-01 //assert ((inst1&0xffff) <= 0x80); u16 *table = (u16 *)(rsp.RDRAM+v0); for (u32 x = 0; x < ((inst1&0xffff)>>0x4); x++) { - adpcmtable[0x0+(x<<3)^S] = table[0]; - adpcmtable[0x1+(x<<3)^S] = table[1]; + adpcmtable[(0x0+(x<<3))^S] = table[0]; + adpcmtable[(0x1+(x<<3))^S] = table[1]; - adpcmtable[0x2+(x<<3)^S] = table[2]; - adpcmtable[0x3+(x<<3)^S] = table[3]; + adpcmtable[(0x2+(x<<3))^S] = table[2]; + adpcmtable[(0x3+(x<<3))^S] = table[3]; - adpcmtable[0x4+(x<<3)^S] = table[4]; - adpcmtable[0x5+(x<<3)^S] = table[5]; + adpcmtable[(0x4+(x<<3))^S] = table[4]; + adpcmtable[(0x5+(x<<3))^S] = table[5]; - adpcmtable[0x6+(x<<3)^S] = table[6]; - adpcmtable[0x7+(x<<3)^S] = table[7]; + adpcmtable[(0x6+(x<<3))^S] = table[6]; + adpcmtable[(0x7+(x<<3))^S] = table[7]; table += 8; } } @@ -860,7 +860,7 @@ static void INTERLEAVE (void) { // Works... - 3-11-01 Left2=*(inSrcL++); Right2=*(inSrcR++); -#ifdef _BIG_ENDIAN +#ifdef M64P_BIG_ENDIAN *(outbuff++)=Right; *(outbuff++)=Left; *(outbuff++)=Right2; diff --git a/src/ucode2.cpp b/src/ucode2.cpp index 0ab3591..29b2835 100644 --- a/src/ucode2.cpp +++ b/src/ucode2.cpp @@ -56,17 +56,17 @@ static void LOADADPCM2 (void) { // Loads an ADPCM table - Works 100% Now 03-13-0 u16 *table = (u16 *)(rsp.RDRAM+v0); // Zelda2 Specific... for (u32 x = 0; x < ((inst1&0xffff)>>0x4); x++) { - adpcmtable[0x0+(x<<3)^S] = table[0]; - adpcmtable[0x1+(x<<3)^S] = table[1]; + adpcmtable[(0x0+(x<<3))^S] = table[0]; + adpcmtable[(0x1+(x<<3))^S] = table[1]; - adpcmtable[0x2+(x<<3)^S] = table[2]; - adpcmtable[0x3+(x<<3)^S] = table[3]; + adpcmtable[(0x2+(x<<3))^S] = table[2]; + adpcmtable[(0x3+(x<<3))^S] = table[3]; - adpcmtable[0x4+(x<<3)^S] = table[4]; - adpcmtable[0x5+(x<<3)^S] = table[5]; + adpcmtable[(0x4+(x<<3))^S] = table[4]; + adpcmtable[(0x5+(x<<3))^S] = table[5]; - adpcmtable[0x6+(x<<3)^S] = table[6]; - adpcmtable[0x7+(x<<3)^S] = table[7]; + adpcmtable[(0x6+(x<<3))^S] = table[6]; + adpcmtable[(0x7+(x<<3))^S] = table[7]; table += 8; } } @@ -99,7 +99,6 @@ static void ADPCM2 (void) { // Verified to be 100% Accurate... short *book1,*book2; u8 srange; - u8 inpinc; u8 mask1; u8 mask2; u8 shifter; @@ -108,13 +107,11 @@ static void ADPCM2 (void) { // Verified to be 100% Accurate... if (Flags & 0x4) { // Tricky lil Zelda MM and ABI2!!! hahaha I know your secrets! :DDD srange = 0xE; - inpinc = 0x5; mask1 = 0xC0; mask2 = 0x30; shifter = 10; } else { srange = 0xC; - inpinc = 0x9; mask1 = 0xf0; mask2 = 0x0f; shifter = 12; @@ -710,7 +707,7 @@ static void INTERLEAVE2 (void) { // Needs accuracy verification... Left2=*(inSrcL++); Right2=*(inSrcR++); -#ifdef _BIG_ENDIAN +#ifdef M64P_BIG_ENDIAN *(outbuff++)=Right; *(outbuff++)=Left; *(outbuff++)=Right2; diff --git a/src/ucode3.cpp b/src/ucode3.cpp index ad8db73..b007b56 100644 --- a/src/ucode3.cpp +++ b/src/ucode3.cpp @@ -248,242 +248,6 @@ static void ENVMIXER3 (void) { //*(u32 *)(hleMixerWorkArea + 24) = 0x13371337; // 22-23 memcpy(rsp.RDRAM+addy, (u8 *)hleMixerWorkArea,80); } -//*/ -static void ENVMIXER3o (void) { - u8 flags = (u8)((inst1 >> 16) & 0xff); - u32 addy = (inst2 & 0xFFFFFF);// + SEGMENTS[(inst2>>24)&0xf]; - //static FILE *dfile = fopen ("d:\\envmix.txt", "wt"); -// ********* Make sure these conditions are met... *********** - if ((AudioInBuffer | AudioOutBuffer | AudioAuxA | AudioAuxC | AudioAuxE | AudioCount) & 0x3) { - DebugMessage(M64MSG_ERROR, "Unaligned EnvMixer"); - } -// ------------------------------------------------------------ - short *inp=(short *)(BufferSpace+0x4F0); - short *out=(short *)(BufferSpace+0x9D0); - short *aux1=(short *)(BufferSpace+0xB40); - short *aux2=(short *)(BufferSpace+0xCB0); - short *aux3=(short *)(BufferSpace+0xE20); - - int MainR; - int MainL; - int AuxR; - int AuxL; - int i1,o1,a1,a2,a3; - unsigned short AuxIncRate=1; - short zero[8]; - memset(zero,0,16); - s32 LVol, RVol; - s32 LAcc, RAcc; - s32 LTrg, RTrg; - s16 Wet, Dry; - - //fprintf (dfile, "\n----------------------------------------------------\n"); - Vol_Right = inst1; - if (flags & A_INIT) { - LVol = (((s32)(s16)Vol_Left * VolRamp_Left) - ((s32)(s16)Vol_Left << 16)) >> 3; - RVol = (((s32)(s16)Vol_Right * VolRamp_Right) - ((s32)(s16)Vol_Right << 16)) >> 3; - LAcc = ((s32)(s16)Vol_Left << 16); - RAcc = ((s32)(s16)Vol_Right << 16); - Wet = Env_Wet; Dry = Env_Dry; // Save Wet/Dry values - //LTrg = (VolTrg_Left << 16); RTrg = (VolTrg_Right << 16); // Save Current Left/Right Targets - LTrg = VolTrg_Left*0x10000; RTrg = VolTrg_Right*0x10000; - //fprintf (dfile, "Vol_Left = %08X LVol = %08X\n", Vol_Left, LVol); - } else { - // Load LVol, RVol, LAcc, and RAcc (all 32bit) - // Load Wet, Dry, LTrg, RTrg - memcpy((u8 *)hleMixerWorkArea, (rsp.RDRAM+addy), 80); - Wet = *(s16 *)(hleMixerWorkArea + 0); // 0-1 - Dry = *(s16 *)(hleMixerWorkArea + 2); // 2-3 - LTrg = *(s32 *)(hleMixerWorkArea + 4); // 4-5 - RTrg = *(s32 *)(hleMixerWorkArea + 6); // 6-7 - LVol = *(s32 *)(hleMixerWorkArea + 8); // 8-9 (hleMixerWorkArea is a 16bit pointer) - RVol = *(s32 *)(hleMixerWorkArea + 10); // 10-11 - LAcc = *(s32 *)(hleMixerWorkArea + 12); // 12-13 - RAcc = *(s32 *)(hleMixerWorkArea + 14); // 14-15 - } - - if(!(flags&A_AUX)) { - AuxIncRate=0; - aux2=aux3=zero; - } - - //fprintf (dfile, "LTrg = %08X, LVol = %08X\n", LTrg, LVol); - - for (int x=0; x<(0x170/2); x++) { - i1=(int)inp[x^S]; - o1=(int)out[x^S]; - a1=(int)aux1[x^S]; - if (AuxIncRate) { - a2=(int)aux2[x^S]; - a3=(int)aux3[x^S]; - } - // TODO: here... - //LAcc = (LTrg << 16); - //RAcc = (RTrg << 16); - - LAcc += LVol; - RAcc += RVol; - - if (LVol < 0) { // Decrementing - if (LAcc < LTrg) { - LAcc = LTrg; - LVol = 0; - } - } else { - if (LAcc > LTrg) { - LAcc = LTrg; - LVol = 0; - } - } - - if (RVol < 0) { // Decrementing - if (RAcc < RTrg) { - RAcc = RTrg; - RVol = 0; - } - } else { - if (RAcc > RTrg) { - RAcc = RTrg; - RVol = 0; - } - } - - //fprintf (dfile, "%04X ", (LAcc>>16)); - - MainL = ((Dry * (LAcc>>16)) + 0x4000) >> 15; - MainR = ((Dry * (RAcc>>16)) + 0x4000) >> 15; - AuxL = ((Wet * (LAcc>>16)) + 0x4000) >> 15; - AuxR = ((Wet * (RAcc>>16)) + 0x4000) >> 15; - /*if (MainL>32767) MainL = 32767; - else if (MainL<-32768) MainL = -32768; - if (MainR>32767) MainR = 32767; - else if (MainR<-32768) MainR = -32768; - if (AuxL>32767) AuxL = 32767; - else if (AuxL<-32768) AuxR = -32768; - if (AuxR>32767) AuxR = 32767; - else if (AuxR<-32768) AuxR = -32768;*/ - /* - MainR = (Dry * RTrg + 0x10000) >> 15; - MainL = (Dry * LTrg + 0x10000) >> 15; - AuxR = (Wet * RTrg + 0x8000) >> 16; - AuxL = (Wet * LTrg + 0x8000) >> 16;*/ - - o1+=(/*(o1*0x7fff)+*/(i1*MainR)+0x4000)>>15; - - a1+=(/*(a1*0x7fff)+*/(i1*MainL)+0x4000)>>15; - - if(o1>32767) o1=32767; - else if(o1<-32768) o1=-32768; - - if(a1>32767) a1=32767; - else if(a1<-32768) a1=-32768; - - out[x^S]=o1; - aux1[x^S]=a1; - if (AuxIncRate) { - a2+=(/*(a2*0x7fff)+*/(i1*AuxR)+0x4000)>>15; - a3+=(/*(a3*0x7fff)+*/(i1*AuxL)+0x4000)>>15; - - if(a2>32767) a2=32767; - else if(a2<-32768) a2=-32768; - - if(a3>32767) a3=32767; - else if(a3<-32768) a3=-32768; - - aux2[x^S]=a2; - aux3[x^S]=a3; - } - } - - *(s16 *)(hleMixerWorkArea + 0) = Wet; // 0-1 - *(s16 *)(hleMixerWorkArea + 2) = Dry; // 2-3 - *(s32 *)(hleMixerWorkArea + 4) = LTrg; // 4-5 - *(s32 *)(hleMixerWorkArea + 6) = RTrg; // 6-7 - *(s32 *)(hleMixerWorkArea + 8) = LVol; // 8-9 (hleMixerWorkArea is a 16bit pointer) - *(s32 *)(hleMixerWorkArea + 10) = RVol; // 10-11 - *(s32 *)(hleMixerWorkArea + 12) = LAcc; // 12-13 - *(s32 *)(hleMixerWorkArea + 14) = RAcc; // 14-15 - memcpy(rsp.RDRAM+addy, (u8 *)hleMixerWorkArea,80); -} -/* -static void ENVMIXER3 (void) { // Borrowed from RCP... - u8 flags = (u8)((inst1 >> 16) & 0xff); - u32 addy = (inst2 & 0xffffff);// + SEGMENTS[(inst2>>24)&0xf]; - - short *inp=(short *)(BufferSpace+0x4F0); - short *out=(short *)(BufferSpace+0x9D0); - short *aux1=(short *)(BufferSpace+0xB40); - short *aux2=(short *)(BufferSpace+0xCB0); - short *aux3=(short *)(BufferSpace+0xE20); - - Vol_Right = (inst1 & 0xffff); // Needed for future references - - int i1,o1,a1,a2,a3; - int MainR; - int MainL; - int AuxR; - int AuxL; - - unsigned short AuxIncRate=1; - short zero[8]; - memset(zero,0,16); - if(flags & A_INIT) { - MainR = (Env_Dry * VolTrg_Right + 0x10000) >> 15; - MainL = (Env_Dry * VolTrg_Left + 0x10000) >> 15; - AuxR = (Env_Wet * VolTrg_Right + 0x8000) >> 16; - AuxL = (Env_Wet * VolTrg_Left + 0x8000) >> 16; - } else { - memcpy((u8 *)hleMixerWorkArea, (rsp.RDRAM+addy), 80); - MainR=hleMixerWorkArea[0]; - MainL=hleMixerWorkArea[2]; - AuxR=hleMixerWorkArea[4]; - AuxL=hleMixerWorkArea[6]; - } - if(!(flags&A_AUX)) - { - AuxIncRate=0; - aux2=aux3=zero; - } - for(int i=0;i<(0x170/2);i++) - { - i1=(int)*(inp++); - o1=(int)*out; - a1=(int)*aux1; - a2=(int)*aux2; - a3=(int)*aux3; - - o1=((o1*0x7fff)+(i1*MainR)+0x10000)>>15; - a2=((a2*0x7fff)+(i1*AuxR)+0x8000)>>16; - - a1=((a1*0x7fff)+(i1*MainL)+0x10000)>>15; - a3=((a3*0x7fff)+(i1*AuxL)+0x8000)>>16; - - if(o1>32767) o1=32767; - else if(o1<-32768) o1=-32768; - - if(a1>32767) a1=32767; - else if(a1<-32768) a1=-32768; - - if(a2>32767) a2=32767; - else if(a2<-32768) a2=-32768; - - if(a3>32767) a3=32767; - else if(a3<-32768) a3=-32768; - - *(out++)=o1; - *(aux1++)=a1; - *aux2=a2; - *aux3=a3; - aux2+=AuxIncRate; - aux3+=AuxIncRate; - } - hleMixerWorkArea[0]=MainR; - hleMixerWorkArea[2]=MainL; - hleMixerWorkArea[4]=AuxR; - hleMixerWorkArea[6]=AuxL; - memcpy(rsp.RDRAM+addy, (u8 *)hleMixerWorkArea,80); -}*/ - static void CLEARBUFF3 (void) { u16 addr = (u16)(inst1 & 0xffff); @@ -534,17 +298,17 @@ static void LOADADPCM3 (void) { // Loads an ADPCM table - Works 100% Now 03-13-0 //assert ((inst1&0xffff) <= 0x80); u16 *table = (u16 *)(rsp.RDRAM+v0); for (u32 x = 0; x < ((inst1&0xffff)>>0x4); x++) { - adpcmtable[0x0+(x<<3)^S] = table[0]; - adpcmtable[0x1+(x<<3)^S] = table[1]; + adpcmtable[(0x0+(x<<3))^S] = table[0]; + adpcmtable[(0x1+(x<<3))^S] = table[1]; - adpcmtable[0x2+(x<<3)^S] = table[2]; - adpcmtable[0x3+(x<<3)^S] = table[3]; + adpcmtable[(0x2+(x<<3))^S] = table[2]; + adpcmtable[(0x3+(x<<3))^S] = table[3]; - adpcmtable[0x4+(x<<3)^S] = table[4]; - adpcmtable[0x5+(x<<3)^S] = table[5]; + adpcmtable[(0x4+(x<<3))^S] = table[4]; + adpcmtable[(0x5+(x<<3))^S] = table[5]; - adpcmtable[0x6+(x<<3)^S] = table[6]; - adpcmtable[0x7+(x<<3)^S] = table[7]; + adpcmtable[(0x6+(x<<3))^S] = table[6]; + adpcmtable[(0x7+(x<<3))^S] = table[7]; table += 8; } } @@ -939,7 +703,7 @@ static void INTERLEAVE3 (void) { // Needs accuracy verification... Left2=*(inSrcL++); Right2=*(inSrcR++); -#ifdef _BIG_ENDIAN +#ifdef M64P_BIG_ENDIAN *(outbuff++)=Right; *(outbuff++)=Left; *(outbuff++)=Right2; -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/mupen64plus-rsp-hle.git _______________________________________________ Pkg-games-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits

