--- /dev/null
+diff -ur riceplugin.old/Config.cpp riceplugin/Config.cpp
+--- riceplugin.old/Config.cpp 2003-09-05 09:28:35.000000000 -0700
++++ riceplugin/Config.cpp 2005-01-09 16:52:09.915439032 -0800
+@@ -148,9 +148,9 @@
+ const int numberOfOpenGLRenderEngineSettings = sizeof(OpenGLRenderSettings)/sizeof(RenderEngineSetting);\r
+ \r
+ #define MAIN_RICE_DAEDALUS_4 "Software\\RICEDAEDALUS510\\WINDOW"\r
+-#define RICE_DAEDALUS_INI_FILE "RiceDaedalus5.1.0.ini"\r
++#define RICE_DAEDALUS_INI_FILE "/usr/games/lib/mupen64/plugins/RiceDaedalus5.1.0.ini"\r
+ \r
+-#define CONFIG_FILE "RiceDaedalus.cfg"\r
++#define CONFIG_FILE "/RiceDaedalus.cfg"\r
+ \r
+ void WriteConfiguration(void);\r
+ void GenerateCurrentRomOptions();\r
+diff -ur riceplugin.old/DaedalusGraphics.cpp riceplugin/DaedalusGraphics.cpp
+--- riceplugin.old/DaedalusGraphics.cpp 2003-09-04 17:12:40.000000000 -0700
++++ riceplugin/DaedalusGraphics.cpp 2005-01-09 16:38:02.452745942 -0800
+@@ -18,11 +18,16 @@
+ */\r
+ #include "stdafx.h"\r
+ #include "_BldNum.h"\r
++#include <assert.h>
+ \r
+ #ifndef _WIN32\r
+ #include <unistd.h>\r
+ #include <stdarg.h>\r
+ #include "messagebox.h"\r
++#include <features.h>
++#include <dlfcn.h>
++#include <errno.h>
++#include <limits.h>
+ #endif\r
+ \r
+ PluginStatus status;\r
+@@ -97,30 +102,31 @@
+ return TRUE; \r
+ } \r
+ #endif\r
+-\r
+-void GetPluginDir( char * Directory ) \r
+-{\r
+-#ifdef _WIN32\r
+- char path_buffer[_MAX_PATH], drive[_MAX_DRIVE] ,dir[_MAX_DIR];\r
+- char fname[_MAX_FNAME],ext[_MAX_EXT];\r
+- GetModuleFileName(myhInst,path_buffer,sizeof(path_buffer));\r
+- _splitpath( path_buffer, drive, dir, fname, ext );\r
+- strcpy(Directory,drive);\r
+- strcat(Directory,dir);\r
+-#else // _WIN32\r
+- int n = readlink("/proc/self/exe", Directory, MAX_PATH);\r
+- if (n == -1)\r
+- strcpy(Directory, "./");\r
+- else\r
+- {\r
+- Directory[n] = '\0';\r
+- while(Directory[strlen(Directory)-1] != '/') \r
+- Directory[strlen(Directory)-1] = '\0';\r
+- }\r
+- strcat(Directory, "plugins/");\r
+-#endif //_WIN32\r
+-}\r
+-\r
++
++void GetPluginDir( char * Directory )
++{
++#ifdef __USE_GNU
++ Dl_info info;
++ void *addr = (void *)GetPluginDir;
++ if (dladdr( addr, &info ) != 0) {
++ strncpy( Directory, info.dli_fname, PATH_MAX );
++ *(strrchr( Directory, '/' )) = '\0';
++ } else {
++ fprintf( stderr, "(WW) Couldn't get Directory of .so, trying to get emulator's path\n" );
++#endif // __USE_GNU
++ if (readlink( "/proc/self/exe", Directory, PATH_MAX ) == -1)
++ {
++ fprintf( stderr, "(WW) readlink() /proc/self/exe fail ed: %s\n", strerror( errno ) );
++ Directory[0] = '.';
++ Directory[1] = '\0';
++ }
++ strcat( Directory, "/plugins/");
++#ifdef __USE_GNU
++ }
++#endif
++
++}
++
+ //-------------------------------------------------------------------------------------\r
+ __declspec(dllexport) void CALL GetDllInfo ( PLUGIN_INFO * PluginInfo )\r
+ {\r
+diff -ur riceplugin.old/DecodedMux.cpp riceplugin/DecodedMux.cpp
+--- riceplugin.old/DecodedMux.cpp 2003-08-28 13:39:21.000000000 -0700
++++ riceplugin/DecodedMux.cpp 2005-01-09 16:22:52.951517362 -0800
+@@ -760,7 +760,7 @@
+ ShadeConstMergeMapType MergeShadeWithConstantsMaps[] =\r
+ {\r
+ 0, SHADE_DO_NOTHING,\r
+- 0x0007000600070006, SHADE_MOD_ENV, // SHADE * ENV\r
++ SHADE_DO_NOTHING, SHADE_MOD_ENV, // SHADE * ENV\r
+ };\r
+ \r
+ // 0x05070501, 0x00070006 //(1 - PRIM) * ENV + PRIM\r
+diff -ur riceplugin.old/IniFile.cpp riceplugin/IniFile.cpp
+--- riceplugin.old/IniFile.cpp 2003-09-03 07:49:33.000000000 -0700
++++ riceplugin/IniFile.cpp 2005-01-09 16:41:30.433074073 -0800
+@@ -115,10 +115,7 @@
+ char readinfo[100];\r
+ char trim[]="{}"; //remove first and last character\r
+ \r
+- char filename[256];\r
+- GetPluginDir(filename);\r
+- strcat(filename,m_szFileName);\r
+- inifile.open(filename);\r
++ inifile.open(m_szFileName);\r
+ \r
+ if (inifile.fail())\r
+ {\r
+Only in riceplugin: Makefile.orig
+diff -ur riceplugin.old/OGLCombinerTNT2.cpp riceplugin/OGLCombinerTNT2.cpp
+--- riceplugin.old/OGLCombinerTNT2.cpp 2003-08-29 06:50:40.000000000 -0700
++++ riceplugin/OGLCombinerTNT2.cpp 2005-01-09 16:22:52.952517258 -0800
+@@ -120,22 +120,22 @@
+ \r
+ GLenum COGLColorCombinerTNT2::RGBArgsMap[] =\r
+ {\r
+- {GL_ZERO, }, //MUX_0\r
+- {GL_ZERO, }, //MUX_1\r
+- {GL_PREVIOUS_EXT, }, //MUX_COMBINED,\r
+- {GL_TEXTURE0_ARB, }, //MUX_TEXEL0,\r
+- {GL_TEXTURE1_ARB, }, //MUX_TEXEL1,\r
+- {GL_CONSTANT_EXT, }, //MUX_PRIM,\r
+- {GL_PRIMARY_COLOR_EXT, }, //MUX_SHADE,\r
+- {GL_CONSTANT_EXT, }, //MUX_ENV,\r
+- {GL_PREVIOUS_EXT, }, //MUX_COMBALPHA,\r
+- {GL_TEXTURE0_ARB, }, //MUX_T0_ALPHA,\r
+- {GL_TEXTURE1_ARB, }, //MUX_T1_ALPHA,\r
+- {GL_CONSTANT_EXT, }, //MUX_PRIM_ALPHA,\r
+- {GL_PRIMARY_COLOR_EXT, }, //MUX_SHADE_ALPHA,\r
+- {GL_CONSTANT_EXT, }, //MUX_ENV_ALPHA,\r
+- {GL_CONSTANT_EXT, }, //MUX_LODFRAC,\r
+- {GL_CONSTANT_EXT, }, //MUX_PRIMLODFRAC,\r
++ GL_ZERO,
++ GL_ZERO,
++ GL_PREVIOUS_EXT,
++ GL_TEXTURE0_ARB,
++ GL_TEXTURE1_ARB,
++ GL_CONSTANT_EXT,
++ GL_PRIMARY_COLOR_EXT,
++ GL_CONSTANT_EXT,
++ GL_PREVIOUS_EXT,
++ GL_TEXTURE0_ARB,
++ GL_TEXTURE1_ARB,
++ GL_CONSTANT_EXT,
++ GL_PRIMARY_COLOR_EXT,
++ GL_CONSTANT_EXT,
++ GL_CONSTANT_EXT,
++ GL_CONSTANT_EXT,
+ };\r
+ \r
+ \r
+diff -ur riceplugin.old/OGLExtCombiner.cpp riceplugin/OGLExtCombiner.cpp
+--- riceplugin.old/OGLExtCombiner.cpp 2003-08-28 14:31:44.000000000 -0700
++++ riceplugin/OGLExtCombiner.cpp 2005-01-09 16:22:52.953517154 -0800
+@@ -474,22 +474,22 @@
+ \r
+ GLenum COGLExtColorCombiner::RGBArgsMap[] =\r
+ {\r
+- {GL_PRIMARY_COLOR_ARB, }, //MUX_0\r
+- {GL_PRIMARY_COLOR_ARB, }, //MUX_1\r
+- {GL_PREVIOUS_ARB, }, //MUX_COMBINED,\r
+- {GL_TEXTURE0_ARB, }, //MUX_TEXEL0,\r
+- {GL_TEXTURE1_ARB, }, //MUX_TEXEL1,\r
+- {GL_CONSTANT_ARB, }, //MUX_PRIM,\r
+- {GL_PRIMARY_COLOR_ARB, }, //MUX_SHADE,\r
+- {GL_CONSTANT_ARB, }, //MUX_ENV,\r
+- {GL_PREVIOUS_ARB, }, //MUX_COMBALPHA,\r
+- {GL_TEXTURE0_ARB, }, //MUX_T0_ALPHA,\r
+- {GL_TEXTURE1_ARB, }, //MUX_T1_ALPHA,\r
+- {GL_CONSTANT_ARB, }, //MUX_PRIM_ALPHA,\r
+- {GL_PRIMARY_COLOR_ARB, }, //MUX_SHADE_ALPHA,\r
+- {GL_CONSTANT_ARB, }, //MUX_ENV_ALPHA,\r
+- {GL_CONSTANT_ARB, }, //MUX_LODFRAC,\r
+- {GL_CONSTANT_ARB, }, //MUX_PRIMLODFRAC,\r
++ GL_PRIMARY_COLOR_ARB,
++ GL_PRIMARY_COLOR_ARB,
++ GL_PREVIOUS_ARB,
++ GL_TEXTURE0_ARB,
++ GL_TEXTURE1_ARB,
++ GL_CONSTANT_ARB,
++ GL_PRIMARY_COLOR_ARB,
++ GL_CONSTANT_ARB,
++ GL_PREVIOUS_ARB,
++ GL_TEXTURE0_ARB,
++ GL_TEXTURE1_ARB,
++ GL_CONSTANT_ARB,
++ GL_PRIMARY_COLOR_ARB,
++ GL_CONSTANT_ARB,
++ GL_CONSTANT_ARB,
++ GL_CONSTANT_ARB,
+ };\r
+ \r
+ \r
+diff -ur riceplugin.old/unique.h riceplugin/unique.h
+--- riceplugin.old/unique.h 2003-08-25 15:25:58.000000000 -0700
++++ riceplugin/unique.h 2005-01-09 16:22:52.953517154 -0800
+@@ -39,6 +39,7 @@
+ //\r
+ //\r
+ \r
++#include <assert.h>
+ #ifdef _MSC_VER\r
+ #include <crtdbg.h>\r
+ #endif\r
+++ /dev/null
-diff -ur riceplugin.orig/DaedalusGraphics.cpp riceplugin/DaedalusGraphics.cpp
---- riceplugin.orig/DaedalusGraphics.cpp 2003-09-19 01:22:36.335328472 -0400
-+++ riceplugin/DaedalusGraphics.cpp 2003-09-19 01:22:36.470307952 -0400
-@@ -18,6 +18,7 @@
- */\r
- #include "stdafx.h"\r
- #include "_BldNum.h"\r
-+#include <assert.h>
- \r
- #ifndef _WIN32\r
- #include <unistd.h>\r
-diff -ur riceplugin.orig/DecodedMux.cpp riceplugin/DecodedMux.cpp
---- riceplugin.orig/DecodedMux.cpp 2003-09-19 01:22:36.366323760 -0400
-+++ riceplugin/DecodedMux.cpp 2003-09-19 01:22:48.379497480 -0400
-@@ -760,7 +760,7 @@
- ShadeConstMergeMapType MergeShadeWithConstantsMaps[] =\r
- {\r
- 0, SHADE_DO_NOTHING,\r
-- 0x0007000600070006, SHADE_MOD_ENV, // SHADE * ENV\r
-+ SHADE_DO_NOTHING, SHADE_MOD_ENV, // SHADE * ENV\r
- };\r
- \r
- // 0x05070501, 0x00070006 //(1 - PRIM) * ENV + PRIM\r
-diff -ur riceplugin.orig/OGLCombinerTNT2.cpp riceplugin/OGLCombinerTNT2.cpp
---- riceplugin.orig/OGLCombinerTNT2.cpp 2003-09-19 01:22:36.340327712 -0400
-+++ riceplugin/OGLCombinerTNT2.cpp 2003-09-19 01:25:36.859884568 -0400
-@@ -120,22 +120,22 @@
- \r
- GLenum COGLColorCombinerTNT2::RGBArgsMap[] =\r
- {\r
-- {GL_ZERO, }, //MUX_0\r
-- {GL_ZERO, }, //MUX_1\r
-- {GL_PREVIOUS_EXT, }, //MUX_COMBINED,\r
-- {GL_TEXTURE0_ARB, }, //MUX_TEXEL0,\r
-- {GL_TEXTURE1_ARB, }, //MUX_TEXEL1,\r
-- {GL_CONSTANT_EXT, }, //MUX_PRIM,\r
-- {GL_PRIMARY_COLOR_EXT, }, //MUX_SHADE,\r
-- {GL_CONSTANT_EXT, }, //MUX_ENV,\r
-- {GL_PREVIOUS_EXT, }, //MUX_COMBALPHA,\r
-- {GL_TEXTURE0_ARB, }, //MUX_T0_ALPHA,\r
-- {GL_TEXTURE1_ARB, }, //MUX_T1_ALPHA,\r
-- {GL_CONSTANT_EXT, }, //MUX_PRIM_ALPHA,\r
-- {GL_PRIMARY_COLOR_EXT, }, //MUX_SHADE_ALPHA,\r
-- {GL_CONSTANT_EXT, }, //MUX_ENV_ALPHA,\r
-- {GL_CONSTANT_EXT, }, //MUX_LODFRAC,\r
-- {GL_CONSTANT_EXT, }, //MUX_PRIMLODFRAC,\r
-+ GL_ZERO,
-+ GL_ZERO,
-+ GL_PREVIOUS_EXT,
-+ GL_TEXTURE0_ARB,
-+ GL_TEXTURE1_ARB,
-+ GL_CONSTANT_EXT,
-+ GL_PRIMARY_COLOR_EXT,
-+ GL_CONSTANT_EXT,
-+ GL_PREVIOUS_EXT,
-+ GL_TEXTURE0_ARB,
-+ GL_TEXTURE1_ARB,
-+ GL_CONSTANT_EXT,
-+ GL_PRIMARY_COLOR_EXT,
-+ GL_CONSTANT_EXT,
-+ GL_CONSTANT_EXT,
-+ GL_CONSTANT_EXT,
- };\r
- \r
- \r
-diff -ur riceplugin.orig/OGLExtCombiner.cpp riceplugin/OGLExtCombiner.cpp
---- riceplugin.orig/OGLExtCombiner.cpp 2003-09-19 01:22:36.371323000 -0400
-+++ riceplugin/OGLExtCombiner.cpp 2003-09-19 01:24:56.994944960 -0400
-@@ -474,22 +474,22 @@
- \r
- GLenum COGLExtColorCombiner::RGBArgsMap[] =\r
- {\r
-- {GL_PRIMARY_COLOR_ARB, }, //MUX_0\r
-- {GL_PRIMARY_COLOR_ARB, }, //MUX_1\r
-- {GL_PREVIOUS_ARB, }, //MUX_COMBINED,\r
-- {GL_TEXTURE0_ARB, }, //MUX_TEXEL0,\r
-- {GL_TEXTURE1_ARB, }, //MUX_TEXEL1,\r
-- {GL_CONSTANT_ARB, }, //MUX_PRIM,\r
-- {GL_PRIMARY_COLOR_ARB, }, //MUX_SHADE,\r
-- {GL_CONSTANT_ARB, }, //MUX_ENV,\r
-- {GL_PREVIOUS_ARB, }, //MUX_COMBALPHA,\r
-- {GL_TEXTURE0_ARB, }, //MUX_T0_ALPHA,\r
-- {GL_TEXTURE1_ARB, }, //MUX_T1_ALPHA,\r
-- {GL_CONSTANT_ARB, }, //MUX_PRIM_ALPHA,\r
-- {GL_PRIMARY_COLOR_ARB, }, //MUX_SHADE_ALPHA,\r
-- {GL_CONSTANT_ARB, }, //MUX_ENV_ALPHA,\r
-- {GL_CONSTANT_ARB, }, //MUX_LODFRAC,\r
-- {GL_CONSTANT_ARB, }, //MUX_PRIMLODFRAC,\r
-+ GL_PRIMARY_COLOR_ARB,
-+ GL_PRIMARY_COLOR_ARB,
-+ GL_PREVIOUS_ARB,
-+ GL_TEXTURE0_ARB,
-+ GL_TEXTURE1_ARB,
-+ GL_CONSTANT_ARB,
-+ GL_PRIMARY_COLOR_ARB,
-+ GL_CONSTANT_ARB,
-+ GL_PREVIOUS_ARB,
-+ GL_TEXTURE0_ARB,
-+ GL_TEXTURE1_ARB,
-+ GL_CONSTANT_ARB,
-+ GL_PRIMARY_COLOR_ARB,
-+ GL_CONSTANT_ARB,
-+ GL_CONSTANT_ARB,
-+ GL_CONSTANT_ARB,
- };\r
- \r
- \r
-diff -ur riceplugin.orig/unique.h riceplugin/unique.h
---- riceplugin.orig/unique.h 2003-09-19 01:22:36.336328320 -0400
-+++ riceplugin/unique.h 2003-09-19 01:22:36.473307496 -0400
-@@ -39,6 +39,7 @@
- //\r
- //\r
- \r
-+#include <assert.h>
- #ifdef _MSC_VER\r
- #include <crtdbg.h>\r
- #endif\r