Icono de NP2kai PS4

NP2kai PS4

Un port nativo de NP2kai para PlayStation 4, con frontend propio, biblioteca de juegos, remapeo completo, estados de guardado, teclado USB y diagnóstico.

Versión 1.0 Plataforma PlayStation 4 OpenOrbis Licencia MIT

> [!IMPORTANT] > Necesitas una **PlayStation 4 compatible con GoldHEN**. Este repositorio no > incluye BIOS, ROM del PC-98, fuentes del sistema ni juegos. ## Requisitos ### Para instalar y usar - PlayStation 4 con **GoldHEN** funcionando. - Un método para instalar paquetes `.pkg`: USB o FTP de GoldHEN. - Archivos propios del PC-98: - `bios.rom` - `itf.rom` - `sound.rom` - `font.bmp` **o** `FONT.rom` - Imágenes de juego compatibles: `.hdi`, `.fdi`, `.d88`, `.hdm` o `.t98`. ### Para compilar - Linux o macOS. - [OpenOrbis PS4 Toolchain](https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain). - `git`, `clang`, `clang++`, `ld.lld`, `llvm-ar` o `ar`, `make`, `patch`, `python3` y `curl` si quieres subir el PKG por FTP. ## Instalación rápida 1. Descarga el archivo `.pkg` desde la sección **Releases** del repositorio. 2. Copia el PKG a `hdd:/data/pkg/` mediante FTP o a un USB. 3. Instálalo desde el gestor de paquetes de GoldHEN. 4. Abre **NP2kai PS4** desde el menú principal. ## Primera ejecución En el primer arranque, el frontend comprueba los archivos necesarios y muestra la ruta exacta de cualquier elemento que falte. Copia las BIOS y la fuente a: ```text /data/np2kai-runtime/system/np2kai/ ``` Copia tus imágenes de juego a: ```text /data/np2kai-runtime/games/ ``` Después pulsa **Triángulo** para volver a comprobar y **X** para continuar. ![Primera configuración](docs/primera-configuracion.jpg) ## Funciones principales ### Biblioteca La biblioteca muestra la lista de juegos a la izquierda y la información del juego seleccionado a la derecha: formato, tamaño, ruta y perfil de controles. ![Biblioteca](docs/biblioteca.jpg) | Botón | Acción | |---|---| | **X** | Abrir el juego seleccionado | | **Cuadrado** | Editar sus controles | | **Triángulo** | Volver a escanear la carpeta | | **Options** | Abrir los ajustes | ### Menú durante el juego Pulsa **L3 + R3** para abrir la pausa. Esa combinación y el touchpad están reservados para evitar que un remapeo deje el frontend inaccesible. Desde la pausa puedes: - continuar; - guardar o cargar estados; - cambiar de disco; - editar los controles del juego; - reiniciar la emulación; - abrir los ajustes; - volver a la biblioteca. ### Controles y teclado USB Cada botón del DualShock 4 puede representar una tecla del PC-98. Hay un perfil global y perfiles independientes por juego, con **104 asignaciones** que cubren las 101 teclas admitidas por NP2kai y los clics del ratón. El stick derecho mueve el ratón; R2 y L2 actúan como clics. Un teclado USB conectado a la PS4 funciona directamente y también puede utilizarse para asignar teclas dentro del editor. ![Editor de controles](docs/controles.jpg) ### Estados de guardado Hay cuatro ranuras por juego en **Pausa > Estados de guardado**. | Botón | Acción | |---|---| | **X** | Guardar | | **Triángulo** | Cargar | | **Cuadrado** | Borrar | Los estados permanecen después de cerrar y volver a abrir la aplicación. ![Estados de guardado](docs/estados.jpg) ### Diagnóstico En **Ajustes > Desarrollador > Diagnóstico** puedes consultar el tiempo empleado por cada frame, FPS, cola de audio y estado del mando y teclado. También se escribe una muestra por segundo en: ```text /data/np2kai-runtime/logs/perf.log ``` ![Diagnóstico](docs/diagnostico.jpg) ### Temas Incluye cuatro temas: gris, azul pizarra, grafito y medianoche. Se cambian desde **Ajustes > Interfaz > Tema**. ## Compilar desde el código fuente Clona el repositorio incluyendo sus submódulos: ```bash git clone https://github.com/EmiiBytee/np2kai-ps4.git cd np2kai-ps4 git submodule update --init third_party/NP2kai ``` Define la ubicación de OpenOrbis y ejecuta el script principal: ```bash export OO_PS4_TOOLCHAIN="$HOME/Dev/PS4/OpenOrbis/PS4Toolchain" ./build-and-deploy.sh ``` El script: 1. comprueba las herramientas y el toolchain; 2. aplica automáticamente el pequeño parche necesario sobre NP2kai; 3. copia desde OpenOrbis los módulos requeridos por el paquete; 4. ejecuta las validaciones de regresión y metadatos; 5. compila el core, el frontend y el PKG. El resultado será: ```text IV0000-BREW00984_00-NP2KAIBOOTSTRAP0.pkg ``` La primera compilación del core es la parte más lenta. Por defecto se ejecuta en un solo proceso para que cualquier error sea legible. Puedes paralelizarla: ```bash NP2KAI_BUILD_JOBS="$(nproc)" ./build-and-deploy.sh ``` Para compilar y subirlo directamente al FTP de GoldHEN: ```bash PS4_IP=192.168.1.100 ./build-and-deploy.sh ``` El puerto predeterminado es `2121`. Puedes cambiarlo con `PS4_FTP_PORT`. Después de clonar, descarga el core fijado por el proyecto: ```bash git submodule update --init third_party/NP2kai ``` ## Estructura del proyecto ```text . ├── SDL2/ frontend y backend de teclado PS4 ├── assets/ iconos y configuración incluida en el PKG ├── docs/ capturas y documentación ├── sce_sys/ icono y metadatos generados del paquete ├── sce_module/ módulos copiados desde OpenOrbis al compilar ├── third_party/NP2kai/ submódulo del core original ├── tools/ validadores, generadores y parche del core ├── Makefile compilación y empaquetado └── build-and-deploy.sh punto de entrada recomendado ``` No necesitas subir tu copia completa de OpenOrbis ni otra copia independiente de NP2kai. El primero es una dependencia externa y el segundo se obtiene como submódulo fijado a una revisión concreta. ## Rutas de datos ```text /data/np2kai-runtime/ ├── config/ configuración global y perfiles ├── games/ imágenes de juego del usuario ├── logs/latest.log registro principal ├── logs/perf.log historial de rendimiento ├── states/ estados de guardado └── system/np2kai/ BIOS, fuente y configuración de NP2kai ``` ## Solución de problemas El registro principal está en: ```text /data/np2kai-runtime/logs/latest.log ``` Si un juego llega a arrancar pero muestra un error propio del PC-98, prueba a borrar este archivo para regenerar el estado de la máquina emulada: ```text /data/np2kai-runtime/system/np2kai/np2kai.cfg ``` Para informar de un fallo, abre un issue e incluye: - versión de NP2kai PS4; - modelo y firmware de la PS4; - versión de GoldHEN; - formato de la imagen usada; - pasos exactos para reproducirlo; - últimas líneas de `latest.log`. No adjuntes BIOS, ROM ni imágenes de juegos. ## Notas técnicas Algunas cosas que costaron unas cuantas horas y conviene dejar documentadas: - El teclado USB usa `libSceKeyboard`, no el IME. - `sceUserServiceInitialize` se comparte entre mando, audio y teclado y debe inicializarse una sola vez. - `APP_VER` y `VERSION` del `param.sfo` deben usar el formato `XX.YY`. - `retro_serialize_size()` realiza trabajo equivalente a una grabación completa; no debe llamarse continuamente. - El core original no reinicia `firstcall` al descargar un juego. El arreglo se conserva como `tools/np2kai-reload-fix.patch` y se aplica automáticamente. ## Estado del proyecto **Versión 1.0.** Probada en consola real con instalación, biblioteca, vídeo, audio, mando, teclado USB, perfiles, remapeo, estados de guardado y cambio de disco. La versión es utilizable y relativamente estable, aunque todavía pueden existir bugs y casos de compatibilidad no descubiertos. Consulta [CHANGELOG.md](CHANGELOG.md) para ver el historial completo. ## Licencia y archivos de terceros El código propio del port —frontend, scripts y herramientas— está disponible bajo la licencia [MIT](LICENSE). NP2kai, OpenOrbis, SDL2, libretro-common, Tabler Icons y las tipografías usadas mantienen sus licencias correspondientes. Consulta [THIRD-PARTY.md](THIRD-PARTY.md). Las BIOS, ROM, fuentes del PC-98 y juegos **no se distribuyen**. ## Créditos - [NP2kai](https://github.com/AZO234/NP2kai), desarrollado por AZO234 y basado en Neko Project II de Yui. - [OpenOrbis PS4 Toolchain](https://github.com/OpenOrbis/OpenOrbis-PS4-Toolchain). - GoldHEN. - [Tabler Icons](https://tabler.io/icons). - Tipografías Carlito y Poppins. Proyecto por **Emii**.