Bueno pues el problema es la inicialización del plugin. La función que hay que analizar es "InitiateGFX". Dicha función se inicia correctamente en Project 1.7 (eax devuelve 1) mientras que en Mupen retorna incorrectamente.(eax devuelve 0). Esto es lo que hay que analizar. ¿Por qué devuelve en Mupen 0? Pues estoy echando un vistazo pero a primera vista parece que ibas por buen camino y parece que reconoce a Mupen pero todavía no estoy seguro.
Actualización.
Mira, si te fijas, el problema está en la subrutina "InitiateGFX". Si entras en ella y accedes un poco más abajo verás lo siguiente (tu dirección seguramente no coincida con la mia pero casi seguro que los últimos bytes si coincidadan):
Código:
02C3AF66 jnz short 02C3AF71
02C3AF68 call 02C66680 -> esta es la call importante para no salir
02C3AF6D test eax,eax
02C3AF6F je short 02C3AF86
02C3AF71 cmp dword ptr ds:[2CF39A4],edi
02C3AF77 jnz short 02C3AF99
02C3AF79 push 2CD80C8 ; ASCII "InitiateGFX called without CloseDLL"
02C3AF7E call 02C36890
02C3AF83 add esp,4
02C3AF86 xor eax,eax <- si entra aquí devuelve que InitiateGFX fue mal
02C3AF68 call 02C66680:
Código:
02C66680 movzx eax,byte ptr ds:[2CF4EBC]
02C66687 retn
En project 1.7 sí es modificado ese byte pero en mupen no. Realmente no sé qué significa ese byte. Sólo es modificado a 1 en el project y repito que no tengo ni idea de porqué.
Bueno, si luego te fijas un poquito más abajo de esto que te acabo de comentar verás tres funciones ultraconocidas que también te envían a que la función initiateGFX se inicie mal. Estas funciones son:
Código:
02C3AFC4 call near dword ptr ds:[2CD721C] ; USER32.GetClassNameA
02C3AFCA push 9
02C3AFCC lea ecx,dword ptr ss:[ebp-1C8]
02C3AFD2 push 2CD7BB8 ; ASCII "Project64"
...
...
02C3AFF1 call near dword ptr ds:[2CD712C] ; kernel32.GetModuleHandleA
02C3AFF7 push eax
02C3AFF8 call near dword ptr ds:[2CD7148] ; kernel32.GetModuleFileNameA
02C3AFFE lea eax,dword ptr ss:[ebp-1C8]
02C3B004 push 2CD7BB8 ; ASCII "Project64"
Como puedes observar, está buscando si el programa es project64 o no. Si el programa donde está el plugin es Mupen64 pues la función initiateGFX dará mal iniciada y saldrá el msgbox que ya sabemos.
Parece ser que el autor del plugin ha hecho un plugin compatible sólo con project64. Para hacerlo compatible con Mupen habrá que hacer una serie de modificaciones más ya que aún evitando esto que te comento, el programa da una excepción.
¿Cuál es el camino que puedes seguir?
Pues probar el plugin en el project y después en mupen y ver por qué uno va por un camino y otro por otro.