42 KiB
SpartanPort
English | Português (Brasil) | Español
SpartanPort es un port no oficial para PC de God of War III Remastered (PlayStation 4) para Windows 10/11 y Linux (AppImage experimental).
No se incluyen archivos del juego. Necesitás un dump de tu propia PS4 (probados: CUSA01623 y CUSA01715, versiones 01.00 y 01.02). Este proyecto no está afiliado a Sony Interactive Entertainment ni a Santa Monica Studio, ni cuenta con su respaldo. God of War es una marca registrada de Sony Interactive Entertainment.
Antes gow3_pc. Las versiones anteriores a la 2.8.0 no se migran: descargá la 2.8.0 de la página de releases e instalala desde cero. Para conservar tus partidas y ajustes en Windows, copiá estos elementos de la carpeta vieja a la nueva, si existen:
user/,mods/,spartanport.ini,settings.json,mods.json,mods_presets.json,patches.jsonygamecontrollerdb.txt. Desde la 2.5.0 o anterior, copiágow3.inicomospartanport.iniy sacá elsettings.jsonde%APPDATA%\gow3-launcher. En Linux, reemplazá el AppImage (ahoraspartanport-x86_64.AppImage: actualizá las opciones de lanzamiento de Steam que usan el nombre viejo del archivo). Desde la 2.5.0 o anterior, copiá también~/.local/share/gow3a~/.local/share/spartanport(sinuser/cacheniout/), renombrá ahí elgow3.iniaspartanport.iniy copiá~/.config/gow3-launcher/settings.jsonal lado. Si actualizaste la 2.6.0 o la 2.7.0 desde el propio launcher, borráGod of War III.exey_internal/de su carpeta, y el viejo acceso directoGod of War IIIdel escritorio: todavía abren el launcher viejo.
Índice
- SpartanPort
- Índice
- Descargar y jugar
- Linux (AppImage, experimental)
- Qué funciona
- Disponibilidad de funciones
- Configuración
- Controles de teclado
- Importar partidas de shadPS4
- Overlays de terceros (Windows)
- Solución de problemas
- Rendimiento y compatibilidad
- Compilar desde el código fuente
- Tests
- Cómo funciona
- Créditos
- Licencia
Descargar y jugar
- Windows 10 (1903 o posterior) o Windows 11, de 64 bits.
- Un procesador de 64 bits con AVX: Intel Sandy Bridge (2011) o posterior, AMD FX o posterior. En
CPUs sin MOVBE, BMI1 o LZCNT (Sandy/Ivy Bridge, AMD FX) el loader reescribe las instrucciones del
juego que las usan por stubs emulados y registra una línea
ISA:; el rendimiento en esas CPUs todavía no fue medido. Las CPUs más antiguas se detienen al iniciar con una líneaSTOP: this CPU lacksen el log. - Una placa de video con Vulkan 1.3 y un driver actual.
- Tu copia del juego (la carpeta con
eboot.bin,sce_moduleysce_sys). Probados: CUSA01623 y CUSA01715, versiones 01.00 y 01.02.
Pasos
- Descargá
spartanport-windows.zipdesde la página de Releases. - Extraelo en una carpeta a tu elección, por ejemplo
C:\Games\spartanport-windows. No lo ejecutes desde dentro del zip. - Abrí
SpartanPort.exe. Si Windows muestra "Windows protegió su PC", hacé clic en Más información y después en Ejecutar de todas formas: el programa no está firmado digitalmente. - Hacé clic en Choose the game folder. Te lleva a la página Game. Junto a Game folder,
hacé clic en Browse… y elegí la carpeta que contiene
eboot.bin. - De vuelta en Home, aparecen la portada y "CUSA01623 · version 01.02". Ajustá Quick settings si querés: modo de pantalla, límite de cuadros, resolución de render y tasa de cuadros del motor.
- Hacé clic en Save para guardar los cambios pendientes y después en PLAY. El primer inicio prepara la imagen del juego; la compilación de shaders también puede afectar el inicio y el rendimiento en las próximas partidas.
Los parches y correcciones vienen incluidos y se aplican automáticamente: la corrección de texturas, saltar videos con X y 120 FPS están activados por defecto. Cambiá la resolución y la tasa de cuadros en Home o Performance. La corrección de pantalla negra al iniciar siempre se solicita, incluso con una selección antigua de parches guardada; cada parche se aplica solo donde coincide su firma. Un parche de resolución reemplaza la corrección de texturas.
Mientras jugás
- Insert en el teclado, o R3 + L2 en el control, abre el menú del port: trucos, multiplicadores, imagen, rendimiento y el overlay de rendimiento.
- Los shaders guardados se cargan en segundo plano. Una pequeña nota "Loading shader cache" en la esquina muestra el progreso.
La próxima vez
Play SpartanPort.exeinicia el juego directamente con tus ajustes guardados. Podés crear un acceso directo en el escritorio o agregarlo a Steam con Agregar un juego que no es de Steam.- Tus partidas, la caché de shaders y el log están en la carpeta
user, junto aSpartanPort.exe. Conservá esa carpeta cuando actualices. - Advanced → Check for updates descarga e instala una versión nueva. Tus partidas y ajustes se conservan.
Linux (AppImage, experimental)
La build de Linux ejecuta el mismo runtime nativo y el mismo launcher. Fue probada en Arch Linux con una Radeon RX 7800 XT (RADV) en una sesión Wayland.
Necesitás: Linux x86-64 con glibc 2.39 o posterior, CPU con AVX, driver Vulkan 1.3 y tu propio dump del juego. El inicio del launcher se verifica en Ubuntu 24.04, Debian 13, Fedora 42, Arch y openSUSE Tumbleweed; esto no comprueba gameplay en todas las GPUs.
Descargar y ejecutar
- Descargá
spartanport-x86_64.AppImagedesde la página de Releases. - En la carpeta del archivo, ejecutá:
chmod +x spartanport-x86_64.AppImage ./spartanport-x86_64.AppImage - Elegí la carpeta del juego, guardá los ajustes y presioná PLAY.
Si una descarga anterior muestra GLIBC_2.44 not found, descargá de nuevo el AppImage recompilado.
El AppImage se actualiza solo: Advanced → Check for updates (o el aviso al abrir el launcher) descarga el AppImage nuevo del release, verifica su SHA-256 y reemplaza el archivo. Necesita una carpeta con permiso de escritura; si no, abre la página de releases.
La corrupción gráfica en Steam Deck/RADV es un problema conocido del AppImage 2.2.0 publicado.
- Archivos: las partidas, los ajustes, la caché de shaders y el log están en
~/.local/share/spartanport; los ajustes propios del launcher en~/.config/spartanport-launcher. - Carpeta de actualización: si la actualización se volcó por separado del juego, elegila en Game → Update folder. Se superpone a la carpeta del juego sin modificar ninguna de las dos.
- Advanced → Linux: sistema de ventanas (automático, Wayland o X11), GameMode y MangoHud. Solo se pueden activar las herramientas instaladas en el sistema.
- Steam: Advanced → Add to Steam agrega "SpartanPort" como juego que no es de Steam, con el ícono, las cápsulas vertical y horizontal, el fondo de la biblioteca y el logo hechos a partir de las imágenes del dump. Cerrá Steam primero (reescribe sus accesos directos al salir). El botón también está en el launcher de Windows (aún no probado ahí).
- Steam Deck / SteamOS (Gaming Mode): si Steam intenta ejecutar el AppImage con Proton, abrí Propiedades → Compatibilidad del acceso directo y seleccioná Steam Linux Runtime en lugar de Proton. El AppImage es una aplicación nativa de Linux.
- Entrada de menú: el AppImage escribe
~/.local/share/applications/spartanport.desktopal iniciar, para que el launcher y la ventana del juego muestren su ícono en el dock; Advanced → Linux lo desactiva y elimina la entrada.
Qué funciona
-
Intro, menús, cinemáticas en video (H.264) y gameplay.
-
Audio: música, voces y efectos (ATRAC9 y MP3).
-
Control (DualSense, Xbox y otros, mediante SDL3) y teclado al mismo tiempo, ambos remapeables.
-
Íconos de botones en el juego (opcional, desactivado por defecto): los íconos de botones de PlayStation dentro del juego pueden mostrar los de tu control, Xbox o Nintendo, o las teclas con las que jugás (página Game, sección Controls).
-
Cámara libre (experimental): el stick derecho o el mouse gira la cámara alrededor de Kratos, por completo, y él se mueve hacia donde ella mira; se detiene antes de las paredes (ver Controles de teclado).
-
Guardado y carga: la lista de partidas guardadas se muestra en pantalla, como en la PS4. El autoguardado también funciona. El launcher hace una copia de seguridad de las partidas antes de cada inicio.
-
Parches: resolución de render de 480p, 720p, 900p, 1440p, 1800p o 4K, corrección de texturas corruptas y saltar videos con el botón X (comunidad); tasa de cuadros del motor de 120 FPS (kvicken), 100 FPS (para pantallas de 100 Hz), 144 FPS (para pantallas de 144 Hz) o 240 FPS (adaptado por Felipe Prado).
-
Ultrawide (beta): resoluciones 21:9, 32:9 y 16:10 (3440x1440 probada) con un campo de visión más ancho en lugar de una imagen con zoom, ya incluidas: elige una en Resolución de render, donde cada opción muestra la resolución exacta y la relación de aspecto. Las escenas de vídeo mantienen sus bordes 16:9 (ver docs/ultrawide.md). Los mods también pueden incluir parches del juego; el mod Ultrawide es lo mismo para versiones anteriores. Cómo instalar un mod: pon su
.zip(sin descomprimir) en la carpetamods, junto aSpartanPort.exe; el juego lo descomprime solo. El mod Ultrawide y un instalador de un clic para la 2.2.0 se explican en extras/mods/Ultrawide. -
Compilación de shaders en segundo plano: los pipelines guardados se cargan y compilan mientras jugás. Todavía puede haber tirones, efectos ausentes durante la compilación y caídas temporales de FPS; el inicio depende de la caché, del driver de video y de la CPU.
-
Launcher con los colores del juego, idiomas seleccionables e inglés como alternativa: cinco páginas (Home, Graphics, Performance, Game, Advanced) y botón Save para cambios pendientes; ajustes rápidos en la página de inicio, gráficos, rendimiento, carpeta del juego y copias de las partidas, parches, mods (orden, presets y conflictos), controles con íconos de botones de PlayStation o Xbox, actualizaciones y diagnóstico.
-
Menú dentro del juego (Insert en el teclado, R3+L2 en el control), con cuatro pestañas:
- Game: trucos (vida infinita, magia, medidor de objeto, Furia de Esparta, máximo de orbes rojos, QTE automático: los avisos de botón y de giro del stick se resuelven solos); multiplicadores de 0,1x a 100x para los orbes rojos, verdes (vida), azules (magia) y dorados (Furia de Esparta) y para el daño causado y recibido; una barra de vida de enemigos.
- Image: modo de pantalla (ventana, sin bordes, pantalla completa), VSync y nitidez RCAS.
- Performance: límite de cuadros por segundo (30 a ilimitado), cuadros en cola, compilación de shaders en segundo plano; la resolución de render, la tasa de cuadros del motor y las opciones de lectura de la GPU se aplican con un solo botón "Apply and restart".
- Overlay: un overlay de rendimiento con FPS, tiempo de cuadro, escalador, GPU (nombre y uso), CPU, RAM y VRAM, cada uno opcional, con tamaño de fuente, esquina, opacidad del fondo y diseño. Los números son el uso del propio juego, no el de todo el sistema.
El menú sigue el idioma del launcher (inglés, portugués, español, francés, alemán, italiano, polaco, turco, indonesio, ruso o chino), o el elegido arriba de la pestaña Juego, al instante. La elección queda en
spartanport.ini(ui_language). -
Trofeos (F8, o R3+R2 en el control): todos los trofeos con su nombre oficial y lo que piden, su grado, cuántos jugadores lo consiguieron y filtros por estado y por grado; notificaciones de trofeo en cuatro temas, con tus propios sonidos e imágenes si quieres. Consulta docs/TROPHIES.es.md.
Disponibilidad de funciones
Disponibilidad comprobada en la release 2.2.0 y en el código el 14 de octubre de 2026.
| Función | Paquetes 2.2.0 publicados | Código actual |
|---|---|---|
| ZIP Windows / AppImage Linux experimental | Disponibles | Scripts de compilación disponibles |
| Corrección de pantalla negra / íconos de botones del control | Incluidos | Incluidos |
| Discord Rich Presence | No incluido | Opcional en Advanced, desactivado por defecto; nombre del juego y tiempo transcurrido |
| Corrección de la cola sparse en RADV | No incluida | Integrada en main |
| FSR 3.1, FSR 4, FSR 4.1, TAA | Desactivados | Gráficos → Upscaling y los menús del juego (detalles) |
| FSR 1 | Desactivados | Desactivados en el flujo de ajustes del launcher/juego |
| Nitidez RCAS | Disponible | Disponible |
El AppImage Linux se recompiló el 14 de octubre para glibc 2.39 o posterior. Los paquetes Windows y Linux pueden usar revisiones distintas del código. Consultá las notas de la release para los cambios en descargas posteriores.
Configuración
Los ajustes se guardan en spartanport.ini (el juego y el menú dentro del juego) y en
settings.json (el launcher), en la carpeta del port. Las partidas, la caché de shaders y
last_run.log van a la carpeta user del proyecto.
En Performance → GPU data → Stream buffer memory, elegí System RAM (cached, default),
System RAM (uncached) o GPU memory (previous behavior). La RAM del sistema puede mejorar los
cuadros por segundo en notebooks con NVIDIA. La elección se guarda y se aplica en el próximo inicio
del juego, incluso al usar Play SpartanPort.exe o --play. Elegí GPU memory para restaurar el
comportamiento de asignación anterior. Para inicios directos sin el launcher, SPARTAN_STREAM_MEMORY
acepta cached, host o device; la elección guardada por el launcher tiene prioridad cuando se
usa.
En Performance → GPU data → Game multisampling, Automatic deja que el juego decida según la
placa de video en la que corre: crea las imágenes multimuestreadas del juego con una sola muestra en
los drivers de Windows de AMD e Intel, donde leer el buffer de profundidad de 2 muestras como textura
producía líneas negras en la iluminación (familia Radeon RX 6600, Arc), y las mantiene
multimuestreadas en el resto (NVIDIA). La etiqueta nombra la placa y la decisión, por ejemplo
"Automatic (Intel(R) Arc(TM) A750 Graphics: off)", y sigue la elección de Graphics card. La regla
cubre toda GPU con esos dos drivers, incluidas las integradas; la línea del log del juego GPU: guest multisampling off u on indica lo que se aplicó. Elegí Off si las líneas aparecen en otra placa
y On para mantener el multimuestreo de todas formas. Off y On establecen SPARTAN_NO_MSAA=1 o 0;
Automatic deja pasar un SPARTAN_NO_MSAA heredado. Se aplica en el próximo inicio del juego.
Upscaling
Elegí el upscaler y el preset de calidad en Gráficos → Upscaling, en el menú Pantalla del juego o en el menú Insert (Image). Los tres muestran los mismos valores. El valor por defecto es Desactivado. El preset renderiza una fracción de la resolución de renderizado y el upscaler reconstruye la resolución completa; cada preset muestra la resolución en que renderiza. Los cambios se aplican al reiniciar (Aplicar y reiniciar en el juego).
- FSR 3.1: cualquier tarjeta gráfica.
- FSR 4: el modelo abierto de FSR 4, incluido. Para AMD Radeon RX 6000 o posterior e Intel Arc; Windows y Linux.
- TAA: antialiasing a la resolución completa, sin upscaling.
La generaci?n de fotogramas AMD FSR (2x) a?ade un fotograma generado entre los del juego. Act?vala en Gr?ficos > Generaci?n de fotogramas o en los men?s del juego, con un escalador seleccionado. Se aplica al instante; al desactivarla se mantiene el escalador.
FSR 4.1 (AMD, Windows)
FSR 4.1 funciona con el runtime Vulkan de AMD (amdvkffx64.dll), que viene con el driver de AMD
(Adrenalin 26.10.1 o posterior).
- RX 7000 y RX 9000: el driver debería incluirlo. Todavía no confirmado; los reportes son bienvenidos.
- RX 6000: el driver actual trae FSR 4.1 solo para DirectX 12, sin el runtime Vulkan. SpartanPort usa FSR 3.1 en su lugar e indica el motivo en el menú del juego (Insert → Image).
- NVIDIA e Intel: FSR 3.1.
Controles de teclado
Valores por defecto; cambialos en la página Controls del launcher, sección Keyboard & Mouse Mapping.
| Tecla | Botón |
|---|---|
| WASD | stick izquierdo |
| Flechas | stick derecho (cámara) |
| Espacio | Cruz (X) |
| Shift izquierdo | Círculo |
| Clic izquierdo | Cuadrado |
| Clic derecho | Triángulo |
| Q y E | L1 y R1 |
| R y el botón de avanzar del mouse | L2 y R2 |
| Z y X | L3 y R3 |
| F | Rage of Sparta (L3 + R3) |
| C | Agarre (L1 + Círculo) |
| El botón de retroceder del mouse | Esquivar |
| 1, 2, 3, 4 | cruceta: arriba, derecha, abajo, izquierda (armas) |
| Rueda del mouse hacia arriba y hacia abajo | arma siguiente y arma anterior (recorre las armas de la cruceta); en los menús del juego (título, pausa y Power Up) sube y baja la selección, y vuelve a las armas al caminar o esquivar |
| Tab | Options |
| P | clic del touchpad izquierdo (modo foto) |
| Esc | clic del touchpad derecho (menú de pausa) |
| Insert | el menú del port (R3+L2 en el control) |
| G | activa y desactiva la cámara libre (un toque de R3 en el control), cuando la cámara libre está activada |
Rage of Sparta en una tecla (activado por defecto) deja Z y X sin uso. Los Joystick prompts responden a los quick-time events de girar el stick sin stick: escribí el giro (medias vueltas D S A, A S D, A W D o D W A; vueltas completas D S A W o A S D W) o, con Adaptive mouse, dibujalo con el mouse. Mientras jugás, el mouse queda dentro de la ventana del juego; el menú del juego, la tecla de pausa (Esc) y otras ventanas lo liberan, y Esc de nuevo o un clic en la ventana lo vuelve a tomar. Con L2 apretado (R), el mouse apunta con el stick derecho, para la Cabeza de Helios o el Arco de Apolo: Relative sigue el movimiento, Absolute apunta desde donde estaba el mouse al apretar L2, y Right stick sensitivity define cuánto mouse hace falta. Sin el launcher, el juego usa sus propias teclas: E y Q para Cuadrado y Triángulo, 1 y 3 para L1 y R1, F para R2, C para R3, I, K, J, L para la cruceta, Enter para Options, Tab y Retroceso para el touchpad.
Teclas alternativas. Cada botón puede tener una segunda y una tercera tecla o entrada del mouse, en
la segunda y la tercera casilla de su fila en la página Controls (el botón x al lado de una casilla
la borra). Todas presionan el botón, así que podés dejar el Cuadrado en el clic izquierdo para el
combate y presionarlo también con la J, o con el Keypad 4, en los minijuegos. En la lira de las Musas, por ejemplo, dejá Espacio, Shift izquierdo y los dos
botones del mouse y agregá K, L, J e I, dispuestas como los cuatro botones (I arriba, J a la
izquierda, L a la derecha, K abajo). Una tecla que ya usa otro botón se intercambia con él, como en
las teclas principales. Los íconos de teclado en el juego muestran la tecla principal; Keys on the
icons (página Controls, con el estilo Keyboard o Match my controller) puede mostrar la alternativa, o la alternativa solo en
la lira (los demás íconos conservan la principal). Los íconos dibujan la primera alternativa definida: la segunda casilla, o la tercera si la segunda está vacía. Sin el launcher,
uní los nombres con | en SPARTAN_KEY_MAP, por ejemplo cross=Space|K|Keypad 2,square=Mouse Left|J.
En un control sin touchpad (Xbox y otros), View abre el menú de pausa (el clic del touchpad derecho) y L1 + View abre el modo foto (el clic izquierdo). En un DualSense el touchpad funciona como en la PS4, y Share/Create funciona como View.
Ataques de cambio con L1 + cruceta y L1 + Cruz (desactivado por defecto, página Controls): L1 +
una dirección de la cruceta cambia a esa arma con su ataque de cambio, y el arma que Kratos ya tiene en
la mano repite su ataque; L1 + Cruz hace el ataque de cambio del arma en la mano en lugar de pasar a la
siguiente arma. El ataque de cambio de la misma arma otra vez espera 0,8 segundos después del último
(el de otra arma no espera). La cruceta sola cambia como antes. Los tutoriales de cambio de arma lo dicen así en todos los idiomas
(en copias de los archivos de idioma en la carpeta de datos del port). Sin el launcher, definí SPARTAN_SWITCH_ATTACKS=1.
Cámara libre (experimental, desactivada por defecto): activala con Free camera (experimental) en la
página Controls del launcher, en la sección Controller del menú del port (Insert) o en Opciones →
Controles del juego. Así el stick derecho, o el mouse mientras el juego lo retiene, gira la cámara
alrededor de Kratos por completo y por encima de él, y la cámara mantiene ese ángulo mientras él se
mueve; el mouse sigue la Right stick sensitivity, y con L2 presionado apunta como antes. Kratos se
mueve hacia donde mira la cámara, y L1 + stick derecho esquiva. En el juego, G (remapeable) o un toque
solo de R3 la desactiva y la activa: desactivada, es la cámara del propio juego, para las peleas contra
jefes y las escenas guionadas. El juego retoma la cámara solo en sus cortes de cámara, los quick-time
events, la pantalla de título y el menú de pausa. La cámara se detiene antes de paredes y rocas (la
colisión del propio nivel, no las paredes invisibles al borde de los precipicios), sube por encima de
Kratos cuando está contra una pared y no baja por debajo de sus pies. Muchos lugares se hicieron solo
para la cámara del juego, así que otros ángulos pueden mostrar partes sin terminar del escenario. Sin el
launcher, definí SPARTAN_FREE_CAMERA=1; SPARTAN_FREE_CAMERA_LIMITS=yaw,pitch (grados) limita cuánto gira.
Los íconos de botones en el juego (desactivados por defecto) se eligen en la página Controls del launcher, en
In-game button icons: Match my controller, Xbox, Nintendo o Keyboard. Reemplazan los íconos de
PlayStation en los tutoriales, la lista de movimientos, las indicaciones de quick-time events y en la lira de las
Musas en la Cámara de la Llama; el dibujo del control en el menú de pausa sigue siendo un DualShock 4. Keyboard muestra la tecla que
presiona cada botón, también en la lira, según tu mapeo del teclado (una tecla cambiada aparece en el próximo inicio);
Match my controller también muestra las teclas cuando no hay un control conectado.
Key colors (en el mismo lugar) pinta las teclas de X, Círculo, Cuadrado y Triángulo, en la lira y en
los demás íconos de teclado: PlayStation colors, o Custom con un color de una paleta corta para
cada botón; los demás íconos y el Gray por defecto no cambian. El launcher escribe una copia
parcheada de hasta tres archivos del juego (unos 410 MB) en la carpeta de datos del port y nunca modifica tu carpeta del
juego. Un control nuevo se detecta después de reiniciar. Sin el launcher, definí SPARTAN_GLYPH_STYLE
como auto, xbox, nintendo o keyboard antes de iniciar run.sh.
En el menú: L1/R1 o Q/E cambian de pestaña. En la lista de partidas: las flechas o la cruceta eligen, Enter o Cruz confirman, Esc o Círculo cancelan.
Importar partidas de shadPS4
Solo son compatibles las partidas de shadPS4 de este juego. Las partidas de RPCS3
son del juego de PS3 y no funcionan. Usá el mismo ID de título (este ejemplo usa CUSA01623).
- Cerrá el juego y shadPS4. Hacé una copia de seguridad de ambas carpetas de partidas.
- Buscá el origen en la carpeta de datos de shadPS4:
user\savedata\1\CUSA01623\en versiones anteriores, ohome\<user-id>\savedata\CUSA01623\en versiones más nuevas. - El destino es
user\savedata\1\CUSA01623\junto aSpartanPort.exe. Ejemplo:C:\Games\spartanport-windows\user\savedata\1\CUSA01623\. Con una Saves folder personalizada en el launcher, usá<carpeta personalizada>\savedata\1\CUSA01623\. - Copiá cada carpeta de slot allí, conservando su nombre y los archivos del juego. No anides otra
carpeta
CUSA01623. Excluí la carpeta internasce_sysdel slot de los datos del juego. - Junto a cada slot, creá
<nombre del slot>.sce_syssi no existe. Podés copiar allí elsce_sys\icon0.pngde shadPS4. No renombresparam.sfoaparam.bin: los formatos son distintos. Conservá cualquierparam.bindel port que ya exista. Sin uno, el slot aparece por el nombre de la carpeta; al guardar de nuevo en el port se escriben sus metadatos y se actualiza la información mostrada. - Iniciá el port y elegí Load Game. También se pueden importar partidas completadas.
El diálogo de partidas del port muestra como máximo 32 entradas. Si el slot importado no aparece
en una lista larga, probalo con una Saves folder separada que contenga solo ese slot en
savedata\1\CUSA01623\, con su carpeta de metadatos vecina. Conservá las partidas originales y
restaurá la configuración anterior de Saves folder después de probar.
Overlays de terceros (Windows)
El proceso del juego es bin\spartanport-probe.exe, no SpartanPort.exe (las builds desde el código
fuente usan out\spartanport-probe.exe). Agregá ese ejecutable a RTSS y activá la visualización en pantalla
de Afterburner. En el instalador de ReShade, seleccioná ese mismo ejecutable y la API Vulkan.
Si el overlay sigue sin aparecer, informá las versiones del port y del overlay, la última versión del
port que funcionaba, y adjuntá user\last_run.log. Estas verificaciones no confirman una solución
para todas las configuraciones de overlay.
Solución de problemas
- Pantalla negra al iniciar: usá la release más reciente, que incluye el parche del deadlock al iniciar. Si persiste, informá GPU, driver, build del juego y la salida de Advanced → Log. Borrar la caché de shaders no es una solución general y requiere reconstruirla al volver a iniciar.
- Error de memoria 1450 ("cannot create ... guest memory"): habilitá o aumentá el archivo de
paginación de Windows. Win + R →
SystemPropertiesAdvanced→ configuración de Rendimiento → Opciones avanzadas → Memoria virtual. Podés usar un tamaño personalizado en C: (por ejemplo, 16384 MB inicial y 24576 MB máximo); aplicá y reiniciá el PC. - El Idioma del juego del launcher no cambia nada: solo se usa en el primer inicio del juego. Después, el juego restaura sus propios idiomas de texto y de diálogos desde su partida de ajustes, así que cambialos en el juego: Opciones → Ajustes de juego → Texto del juego y Opciones → Audio → Diálogos (por ejemplo, texto en español con voces en inglés).
- El juego no abre: revisá Advanced → Log, o enviá
user\last_run.logjunto con tu reporte. Con una Saves folder personalizada,last_run.logestá en esa carpeta. Junto a él,last_run.jsonltiene las mismas líneas con la hora, el nivel y el área de cada una, para herramientas y para saber qué evento vino primero; adjuntá los dos archivos al reportar un bug. - Texturas amarillas/naranjas/blancas o iluminación incorrecta: probá desactivar Performance → GPU data → Deferred GPU readbacks y reiniciar el juego. Esta alternativa puede causar tirones.
- Los fallos gráficos por GPU, cierres, problemas de audio y bloqueos de progreso siguen bajo investigación. Revisá las notas de la release y los issues antes de reportar; cuando corresponda, incluí una partida guardada anterior al problema.
Rendimiento y compatibilidad
Pruebas anteriores en una AMD Radeon RX 6700 XT, Ryzen 5 5600X y 32 GB registraron 144 FPS de promedio (55 a 240) en 1080p con el motor en 240 FPS. Son resultados de referencia, no un benchmark de cada release ni una garantía de rendimiento en otros equipos.
Probado y jugable de principio a fin en 1080p nativo con el motor en 240 FPS en el equipo de pruebas. También se reportaron texturas corruptas, cierres y bloqueos de progreso en otras configuraciones, incluso en 1080p. Consultá los problemas conocidos en las notas de la release.
Compilar desde el código fuente
Windows
Instalá rustup (stable) y Visual Studio Build Tools con la carga "Desarrollo para el escritorio con C++"; el launcher se compila con cargo y no necesita Python. Los comandos de compilación siguientes usan MSYS2 CLANG64; los comandos del launcher marcados como PowerShell se ejecutan en Windows.
El desarrollo ocurre en la rama spartanport; main recibe merges ya probados.
-
Instalá MSYS2 (
winget install MSYS2.MSYS2) y, en la consola MSYS2 CLANG64, los paquetes listados en packaging/windows/README.md. -
Cloná el repositorio con sus submódulos y compilá:
git clone --recursive https://github.com/FelipePrado0/SpartanPort cd SpartanPort git checkout spartanport # development branch; omit to build main bash build.sh -
Iniciá el launcher (en PowerShell, en la carpeta del proyecto):
cd launcher-rust cargo run --release -
En Game, elegí la carpeta del juego y los parches. Ajustá Graphics y Performance, hacé clic en Save para guardar cambios pendientes y después en PLAY.
Para jugar con los ajustes guardados sin abrir la ventana del launcher (para un acceso directo o Steam):
cd launcher-rust
cargo build --release
.\target\release\spartanport-launcher.exe --play
O sin los ajustes del launcher, desde Git Bash o una terminal MSYS2:
SPARTAN_GAME_DIR='D:\ruta\CUSA01623' bash run.sh
Linux (Ubuntu 24.04)
Para un clon nuevo, ejecutá los comandos siguientes en una terminal Linux. El script de dependencias instala paquetes del sistema con sudo y selecciona GCC 14 como compilador predeterminado. El launcher necesita además rustup (stable). Está destinado a Ubuntu 24.04; adaptá las dependencias en otras distribuciones. Si ya clonaste, empezá en la carpeta del repositorio y omití los dos primeros comandos.
git clone --recursive https://github.com/FelipePrado0/SpartanPort
cd SpartanPort
bash packaging/linux/ci-deps.sh
bash build.sh
cd launcher-rust
cargo run --release
Para generar un AppImage después de compilar:
bash packaging/linux/build.sh
./dist/spartanport-x86_64.AppImage
packaging/linux/build.sh compila el launcher en Rust por su cuenta. Compilar en una distribución
más nueva puede requerir una glibc más nueva; las builds públicas usan Ubuntu 24.04. En la carpeta
del repositorio, usá bash run.sh para iniciar directamente (compila lo que falta y ejecuta el exe
del launcher con --run), con SPARTAN_GAME_DIR=/ruta/a/CUSA01623 para indicar la carpeta del
juego. Para los ajustes guardados del launcher sin la ventana, ejecutá
launcher-rust/target/release/spartanport-launcher --play.
Launcher en Rust
El launcher está escrito en Rust (launcher-rust/, iced) y es el único que traen los paquetes.
Compila con rustup (stable). En Windows, instalá Visual Studio Build Tools con la carga "Desarrollo para el escritorio con C++"; en
Ubuntu, sudo apt-get install build-essential pkg-config libwayland-dev libxkbcommon-dev.
cd launcher-rust
cargo run --release
Abierto desde un checkout, encuentra solo las herramientas de out/; SPARTAN_PORT_DIR lo apunta
a un port empaquetado (con bin/). PLAY inicia el propio exe del launcher con --run, así que
nada necesita Python.
En macOS, main compila solo el launcher (PLAY todavía no tiene juego para iniciar); mirá los pasos en
launcher-rust/README.md (en inglés).
Tests
Ejecutá desde la raíz del repositorio después de compilar. Los primeros tests C++ siguientes no necesitan un dump del juego.
Python
El código Python del launcher y del runner está congelado: no se empaqueta ni lo ejecuta el port. Queda en el repositorio como referencia de paridad del launcher en Rust. Sus tests siguen corriendo, con Python 3.10 o posterior (en Windows, en PowerShell):
python -m unittest discover -s tests -p "test_*.py"
Launcher en Rust
cd launcher-rust
cargo test
Los snapshots de las páginas en launcher-rust/snapshots/ se comparan píxel a píxel solo en
Windows. python -m unittest discover -s tests -p "test_launcher_parity_doc.py" comprueba que cada
test del launcher en Python tiene su fila en docs/specs/2026-10-21-rust-launcher-parity.md.
Tests C++ en Windows (MSYS2 CLANG64)
source ./msys2-env.sh
ninja -C out/gpu perf-overlay-test warmup-inbox-test graphics-settings-test
out/gpu/perf-overlay-test.exe
out/gpu/warmup-inbox-test.exe
out/gpu/graphics-settings-test.exe
Tests C/C++ en Linux
bash build.sh --test
ninja -C out/gpu perf-overlay-test warmup-inbox-test graphics-settings-test
out/gpu/perf-overlay-test
out/gpu/warmup-inbox-test
out/gpu/graphics-settings-test
bash build.sh --test ejecuta los tests adicionales del runtime C solo en Linux. En Windows, la compilación termina antes de ese bloque; usá los targets Ninja anteriores.
Verificaciones con el juego preparado
Después de preparar tu propio dump, se necesitan out/eboot.elf y out/boot-linked.bin para
las verificaciones siguientes. En MSYS2 CLANG64 de Windows, reemplazá la ruta de ejemplo por
la carpeta de tu juego:
ninja -C out/gpu stat-multipliers-test
out/gpu/stat-multipliers-test.exe out/eboot.elf
out/spartanport-probe.exe out/boot-linked.bin --app0 "D:/Games/CUSA01623" --check-imports
En Linux, usá out/gpu/stat-multipliers-test y out/spartanport-probe, sin .exe, y una ruta Linux
para el juego. --check-imports verifica los imports del sistema y termina sin iniciar el
gameplay. Hay más targets en gpu/CMakeLists.txt.
Cómo funciona
La parte de la CPU es nativa: el ejecutable original del juego corre directamente en el procesador
de la PC (la PS4 usa la misma arquitectura x86-64), y un runtime escrito para este juego reemplaza
las bibliotecas del sistema de la PS4, sin emulación de CPU. Los gráficos se traducen: corren
sobre el video core de shadPS4, que convierte los
comandos y shaders de la GPU de la PS4 a Vulkan, con las correcciones de renderizado del juego
III de la rama eltutz de cuesta4. Ejecutar el
código del juego directamente en la CPU es también como funciona shadPS4; lo que este proyecto
cambia es la capa del sistema y el trabajo específico del juego (parches, caché de shaders en
segundo plano, launcher y menú dentro del juego).
Es un fork del port para Windows de Supermedo de
bloodborne_pc de deadinside28 (ver
Créditos).
- Los parches y los hooks dentro del juego (trucos, multiplicadores, barra de vida) encuentran sus
sitios por firma: los bytes originales alrededor de cada uno, donde sea que una versión haya
colocado ese código (
tools/make_signatures.py). Si no se encuentra un sitio, solo ese parche o hook queda desactivado; el juego inicia sin él, y el log y el menú explican por qué.
| Parte | Dónde | Qué hace |
|---|---|---|
| Preparación | launcher-rust/src/core, launcher-rust/src/runner |
Lee eboot.bin, aplica sus relocaciones y enlaza las libc y libSceFios2 propias del juego en una sola imagen |
| Loader | src/probe.c |
Carga la imagen, instala los hooks validados (trucos, multiplicadores, barra de vida) e inicia el código original del juego |
| Runtime | src/runtime_*.c |
Reimplementa las funciones del sistema de la PS4: memoria, hilos, archivos, audio, video, control, partidas y servicios |
| GPU | gpu/shadps4/ |
El video core de shadPS4, que traduce los comandos y shaders de la GPU de la PS4 a Vulkan, con las correcciones de cuesta4 para este juego (rama eltutz) y el trabajo de velocidad de este port (caché de shaders en segundo plano, lecturas diferidas) |
| Menú dentro del juego | gpu/shim/spartanport_overlay.cpp |
El menú Dear ImGui y el overlay de rendimiento; ajustes en gpu/shim/spartanport_settings.cpp |
| Parches | patches/CUSA01623.xml, launcher-rust/src/core |
Se aplican en memoria al iniciar, sin modificar los archivos del juego |
| Launcher | launcher-rust/src/ui |
Ajustes, parches, mods, controles y el botón de jugar |
El Python de scripts/ y launcher/ se conserva como la referencia congelada de la que se portó el código Rust; ya no se distribuye.
Más documentación: mods, parches, mapa de cuadros e historial de investigación de escaladores y trabajo paralelo de GPU.
Créditos
Este proyecto es un fork del port para Windows de Supermedo, que se basa en el original de deadinside28:
- deadinside28: bloodborne_pc, el port nativo original.
- Supermedo (Mohammed Albarghouthi): bloodborne_pc para Windows, el fork del que proviene este proyecto.
- cuesta4: fork de shadPS4 enfocado en este juego
(rama
eltutz). El renderizado del juego en este port depende de sus correcciones: la reescritura del blend GNM, el estado de depth/stencil y el aliasing de imágenes. cuesta4 también es coautor de los parches de resolución, corrección de texturas, 120 FPS y saltar videos (abajo). Si jugás en shadPS4, esta es la build a usar para este juego. - Equipo de shadPS4: el video core de shadPS4, que hace toda la traducción de GPU y shaders a Vulkan en este port.
- WilkPrintes: diseñó y construyó el sitio de SpartanPort. Un agradecimiento especial por darle un hogar al proyecto.
- IFreemz (eFMann en GitHub): shadPS4 Bloodborne DLSS & FSR. El puente de DLSS y la integración de los upscalers temporales en que se basan DLSS, FSR 3.1 y FSR 4 de este port.
Parches: kvicken y cuesta4 (resolución, corrección de texturas, 120 FPS y saltar videos, sobre los parches de PS3 de illusion0001), publicados para shadPS4 en shadps4-emu/ps4_cheats#145 y adaptados a este ejecutable. Los parches de 144 y 240 FPS fueron adaptados por Felipe Prado a partir del de 120 FPS; el de 100 FPS es el mismo parche con 100. Trucos: adaptados de los GoldHEN cheats de Celogamez.
También se usan: LibAtrac9, FFmpeg, SDL3, Dear ImGui, sirit, magic_enum, miniz, xbyak, Vulkan Memory Allocator, FSR-Vulkan y el AMD FidelityFX SDK, Q2RTX (los archivos del modelo abierto de FSR 4), MSYS2, LLVM y Pillow.
Licencia
GNU GPL v2 o posterior (LICENSE). Los componentes de terceros conservan sus propias licencias.
