# Project64

Project64 es un emulador de Nintendo 64 escrito en C++, diseñado para la plataforma Windows que empezó a comercializarse el 26 de mayo de 2001. Este software utiliza un sistema mediante plugins permitiendo que grupos de terceros empleen su propio software para la implementación de componentes específicos. Project64 permite jugar videojuegos para Nintendo 64 en una computadora o teléfonos tanto android como iPhnones leyendo imágenes ROM, extrayendo siempre los datos de la memoria de solo lectura de un cartucho de Nintendo 64 o creando directamente un homebrew en la computadora. Este emulador fue freeware hasta su versión 1.6, la versión 1.7 se distribuyó como software propietario a cambio de donaciones y a partir de la versión 2.0 es código abierto.
Project64 se encuentra entre los mejores emuladores disponibles siendo 1964 uno de sus más directos rivales.

## Modo de funcionamiento

El emulador permite la emulación de los videojuegos con la ayuda de los plugins externos (los plugins se separan en cuatro tipos: plugin de video, audio, control y RSP). Project64 se ejecuta especialmente con una buena rapidez en computadoras basadas en Intel/AMD, especialmente a través de su compilador en tiempo de ejecución que analiza la ROM cargada y traduce las instrucciones conocidas para que sean funcionalmente similares a x86 inmediatamente cuando la ROM es cargada. Esto contrasta con su intérprete, que interpreta cada instrucción en el momento en que los recibe. Aunque a veces se producen excepciones fatales, Project64 comúnmente puede interceptar errores de plugin sin que la emulación se congele. El plugin de video Jabo's Direct3D utiliza un controlador de excepciones justo a tiempo que rectifica los problemas mediante la revisión de muchas soluciones comunes para dichas excepciones y, a menudo, la reposición de datos que han sido dañados.

## Gráficos

Los plugin gráficos Jabo's Direct3D permiten aplicar durante el juego distintos efectos ( anisotropic filtering, Super2xSal textures entre otras) además de cambiar la resolución. Cabe destacar que, gracias a la ayuda de un plugin de vídeo llamado Rice, uno puede cambiar temporalmente las texturas que se encuentran en la ROM por otras texturas en archivos externos (BMP, PNG o JPEG), pudiendo conseguir más resolución que la del propio juego cuando fue diseñado permitiendo aumentar la calidad gráfica del juego. Esta cualidad apareció a principios del 2005, renovando el interés de la comunidad por la emulación sobre la N64. Algunos juegos que se han aprovechado de este aumento de texturas fueron Super Mario 64, The Legend of Zelda: Ocarina of Time y WWF No Mercy (además de otros juegos en los cuales trabajan los usuarios).

## Emulación del controlador y sus accesorios

Los plugins de control permite un soporte de hasta cuatro jugadores, ya que así era originalmente en la consola. Se pueden asignar botones del teclado para que emulen cada uno de los botones del control original. Además, los plugins dan soporte a joystick o mandos de control para computadora. Cabe destacar que si el joystick posee efecto de vibración, con el plugin N-rage se puede emular el Rumble Pack, accesorio para el control de la consola, con lo que se podrá disfrutar del "Rumble force feedback" (vibración del controlador). También, con el mencionado plugin se puede emular el Transfer Pack, el cual permitía transferir datos del Game Boy Color al Nintendo 64, y viceversa.

## Trampas

Project64 permite el uso de trampas. También tiene soporte para los códigos de GameShark. Permite al usuario almacenar trucos para cada juego individual, y cuáles han sido seleccionados para cada juego. Project64 cuenta con un "botón de GS", que permite al usuario ejecutar un código específico GameShark, ya sea presionando F9 en el teclado o en el control del sistema -> botón de GameShark en el menú durante la emulación de Project64.

## Compatibilidad

Requisitos del sistema :
| Aspectos | Mínimos | Recomendados |
| Versión 1.6 |||
| Sistema operativo | Windows 98 o superior | Windows 98 o superior |
| CPU | Intel Pentium 3 con 700MHz, o AMD Athlon con 800MHz | Intel Pentium 4 con 2.6Ghz o superior, o AMD Athlon con 1.5 GHz o superior |
| Memoria | 256 MB de RAM | 512 MB de RAM o más. |
| Espacio en disco duro | 200 MB (más 20MB a 100 MB para cada juego) | 1 GB o más de espacio libre en el disco duro |
| Hardware gráfico | nVidia GeForce3 o superior, o ATI Radeon 8500 o superior | nVidia GeForce FX o superior, o ATI Radeon 9500 o superior |
| Hardware de sonido | Creative Soundblaster Live! o superior | Creative Soundblaster Live! o superior |
| Otros | DirectX 8, Adaptoid y un control original de Nintendo 64 para cada jugador | DirectX 8, Adaptoid y un control original de Nintendo 64 para cada jugador |
| Versión 2.x o superior |||
| Sistema operativo | Windows XP / Vista / 7 / 8 / 10 (x86) | Windows XP / Vista / 7 / 8 / 10 (x86) |
| CPU | cualquiera Intel o AMD con soporte SSE2 | cualquiera Intel o AMD con soporte SSE2 |
| Memoria | 512MB | 512MB |
| Espacio en disco duro | 200 MB (más 20MB a 100 MB para cada juego) | 200 MB (más 20MB a 100 MB para cada juego) |
| Hardware gráfico | Compatible con DirectX 8 (utilizando el plugin Jabo's Direct3D8), OpenGL 1.1 (Project64 Video) u OpenGL 3.3 (GLideN64) | Compatible con DirectX 8 (utilizando el plugin Jabo's Direct3D8), OpenGL 1.1 (Project64 Video) u OpenGL 3.3 (GLideN64) |
| Hardware de sonido | Compatible con DirectX 8 | Compatible con DirectX 8 |
| Otros | Adaptoid y un control original de Nintendo 64 para cada jugador | Adaptoid y un control original de Nintendo 64 para cada jugador |
Este emulador soporta prácticamente todos los juegos de N64. Alrededor del 75-80% de los juegos son compatibles y se juegan casi a la perfección. Se estima que otros 10% trabajan, pero con problemas.