Port experimental de Grand Theft Auto: Vice City Stories para Android ARM64 y Windows, basado en recompilación estática del código de PSP.
Estado actual (beta 0.3.0): el juego se juega en Android con render por GPU (Vulkan), en pantalla completa widescreen, con audio completo (incluidas las voces de las cinemáticas), cámara libre y guardado de estado. Ahora también en celulares de gama baja (modo 30 FPS y resolución de PSP) y en Android de 32 bits. Todavía hay detalles pendientes (ver Problemas conocidos).
PSPRecomp traduce el código Allegrex de la PSP a C++ nativo. Este repositorio añade el perfil de VCS, los servicios de plataforma para Android y Windows, y la app Android. El código del juego se recompila; los datos del juego se leen de una copia propia del usuario.
- Android 8.0 o superior, procesador ARM y soporte Vulkan (probado en un Samsung Galaxy S25 Ultra).
- Hay dos APK:
arm64para casi todos los celulares, yarmv7(32 bits) solo para los que tienen Android de 32 bits (si el de 64 bits no se instala, usa este). El de 32 bits rinde menos. - Tu propia copia de GTA: Vice City Stories para PSP (USA, ULUS10160), preparada con setup_vcs.ps1. Ese paso extrae los datos y genera el ELF descifrado.
Los datos van en una carpeta llamada exactamente VCS (en mayúsculas) en la raíz del almacenamiento interno del teléfono, es decir, /storage/emulated/0/VCS. Dentro tiene que quedar la carpeta PSP_GAME del juego:
Almacenamiento interno/
└── VCS/
└── PSP_GAME/
├── SYSDIR/
│ └── EBOOT_DECRYPTED.ELF
└── USRDIR/
└── RUNDATA/ … (resto de los datos del juego)
Puedes copiarla con un explorador de archivos, por USB o con ADB:
adb shell mkdir -p /storage/emulated/0/VCS
adb push --sync profiles\vcs\game\PSP_GAME /storage/emulated/0/VCS/Si la app no encuentra VCS/PSP_GAME/SYSDIR/EBOOT_DECRYPTED.ELF, lo avisa en pantalla al abrirla.
- Descarga el APK desde Releases e instálalo.
- Al abrirla por primera vez, concede el permiso "Acceso a todos los archivos"; sin él no puede leer la carpeta
VCS. Luego vuelve a abrir la app. - La primera carga tarda un poco más.
Guarda el juego completo en el instante exacto —misión, cinemática, posición— y lo recupera después. Es independiente de las partidas del propio juego.
- Hay 3 ranuras; cada una muestra la fecha y hora de lo guardado.
- Toca una ranura para Guardar aquí / Sobrescribir o Cargar.
- También está en ⚙ → Guardado de estado….
- Los estados se guardan dentro de la app (
files/savestates) y se pierden al desinstalarla.
- Guardado de estado: las mismas ranuras que el botón 💾.
- Sensibilidad de cámara: de Baja a Máxima; se aplica al instante al arrastre, al joystick derecho y al stick del mando.
- Resolución interna: PSP original (272 líneas, gama baja), Rendimiento (544), HD, Full HD o nativa de la pantalla. Se aplica al reiniciar la app.
- Velocidad (FPS): 30 FPS, la velocidad original de la PSP y la mitad de trabajo (recomendado en gama baja), o 60 FPS, más fluido. Se aplica al reiniciar la app.
Celulares de gama baja (procesadores como Helio G85, Snapdragon 6xx/7xx, o menos de 4 GB de RAM): la primera vez que se abre, la app lo detecta y empieza sola en resolución PSP original y 30 FPS. Se puede cambiar desde ⚙.
- Editar posición de controles: arrastra cada grupo de botones y ajusta su tamaño con − / +.
- Restablecer controles: vuelve al diseño original.
La configuración avanzada vive en VCSNative.ini, dentro de los archivos privados de la app.
- Táctil: joystick flotante (aparece donde apoyas el pulgar), cruceta, △ ○ ✕ □, L, R, SELECT y START.
- Cámara táctil: joystick derecho (el del ojo 👁, a la izquierda de △ ○ ✕ □) para girar la cámara; también se puede mirar arrastrando el dedo por cualquier zona libre de la pantalla.
- Mando Bluetooth/USB: A = ✕, B = ○, X = □, Y = △, L1/L2 = L, R1/R2 = R, Start, Select, cruceta, stick izquierdo y stick derecho para la cámara.
- Teclado y ratón: WASD para moverse (Alt para caminar), Espacio, Shift, F/Enter, Q/E, H, flechas, Esc (pausa) y Tab. El primer clic captura el ratón y desde entonces mueve la cámara, como en PC; clic izquierdo dispara, clic derecho apunta y el botón central mira atrás.
Al usar un mando, un teclado o un ratón, los controles táctiles se ocultan; vuelven al tocar la pantalla.
El radar está arriba a la izquierda, donde no lo tapa el pulgar. Si el botón L te lo tapa, muévelo con ⚙ → Editar posición de controles.
- En resoluciones altas el juego no siempre llega a velocidad completa. Si va lento, baja la resolución y pon 30 FPS desde ⚙.
- En celulares muy modestos (Helio G85 y similares) puede no llegar a velocidad completa ni en el modo de gama baja.
- En algunos puntos (el icono de guardado del juego, el final de algunas misiones) la pantalla puede quedarse en negro. Se está investigando; mientras tanto, usa el guardado de estado antes de esos momentos para no perder avance.
- Los videos de introducción se saltan (pantalla negra): falta el decodificador de video para Android.
- El APK beta está firmado con una clave de depuración.
Requisitos: Android SDK, NDK 28.2.13676358, CMake 3.22.1, Java compatible con Gradle 8.11.1 y un dispositivo ARM64 autorizado para ADB. Desde PowerShell, en la raíz del repositorio:
./build_android.ps1
./run_android.ps1Consulta Vulkan en Android y el análisis de portabilidad para los detalles técnicos.
Requisitos: Visual Studio 2022 con C++, Windows SDK, CMake y los archivos de una copia propia del juego.
./build_vcs.ps1
./run_vcs.ps1La preparación local está en setup_vcs.ps1 y prepare_game.ps1.
El repositorio y los APK de Releases contienen solo el programa, sin ningún dato del juego. No subas ISOs, EBOOTs, ELF descifrados, partidas ni recursos comerciales: cada usuario debe aportar sus propios archivos.
El framework PSPRecomp usa licencia MIT. Las licencias y avisos adicionales del perfil están en THIRD_PARTY.md. Proyecto comunitario no oficial, sin afiliación con Rockstar Games ni Sony Interactive Entertainment.