9.5 KiB
Historial de cambios
v1.0
Version de publicacion. Sin cambios de codigo respecto a la v0.52, salvo la pantalla de creditos y la limpieza del arbol.
- Creditos en Ajustes > Ayuda e informacion. Acredita el emulador, sus componentes internos, el toolchain, GoldHEN, SDL2, libretro, los iconos y las dos tipografias.
- Fuera del repositorio: ROM del PC-98, la fuente, logs de compilaciones antiguas y restos de parcheado.
- Los ocho changelogs sueltos consolidados en este archivo.
- Comentarios del codigo repasados: la explicacion tecnica se queda, el desahogo personal no.
- El validador (
tools/validate-release.py) ahora rechaza el build si reaparece cualquier residuo o si los creditos pierden alguna atribucion.
v0.52
El cuelgue al recargar un juego (venia de las primeras versiones)
Abrir un juego, pausar, volver a la biblioteca y cargarlo otra vez colgaba la
aplicacion. Es un bug del core, en libretro.c:
static int firstcall = 1;
void retro_run(void) {
if (firstcall) {
pre_main(RPATH); // la inicializacion de verdad de la maquina
pccore_reset();
firstcall = 0;
return;
}
...
}
void retro_unload_game (void){} // vacio
firstcall solo se pone a 0 y nunca vuelve a 1. Al volver a la biblioteca,
retro_deinit() llama a np2_end() y destruye la maquina; al cargar otra vez,
pre_main() ya no se ejecuta y el core sigue corriendo sobre estado destruido.
Arreglado haciendo que retro_unload_game() haga su trabajo: dejar el core
listo para la siguiente carga. Es una linea.
Esto tambien explica por que "Reiniciar juego" usaba retro_reset() en vez de
recargar: se rodeo el sintoma sin llegar a la causa.
NP2kai es un submodulo, asi que en un clon limpio el arreglo no vendria. El
parche esta en tools/np2kai-reload-fix.patch y build-ps4-core.sh lo aplica
solo si hace falta. El validador falla si desaparece cualquiera de los dos.
Cambio de disco
Pausa > Cambiar de disco. Lista las imagenes de la biblioteca, marca cual esta puesta ahora, y al elegir otra cierra el juego del todo y abre la nueva, como pediste. No intento cambiarla en caliente.
Eso solo es posible gracias al arreglo de arriba: cerrar y abrir era exactamente el camino que colgaba.
Avisa en el panel de que se pierde la partida si no has guardado antes.
La fila que faltaba en la pausa
Culpa mia, de la v0.51. El bucle de dibujado tenia el numero de filas escrito a mano:
for (unsigned row = 0; row < 6; ++row)
Al añadir "Estados de guardado" pase a siete etiquetas pero el bucle seguia
pintando seis, asi que la ultima desaparecio sin decir nada. Ahora sale de
PAUSE_ROW_COUNT y el validador comprueba que el numero de etiquetas cuadre.
Y "Cerrar aplicacion" fuera, que solo servia para colgar la app.
El menu queda: Continuar · Estados de guardado · Cambiar de disco · Controles · Reiniciar juego · Ajustes · Volver a la biblioteca.
v0.37
Nota anadida despues: este camino nunca llego a funcionar.
libSceIme.ano existe en las versiones actuales de OpenOrbis, y ademas el teclado USB no va por el IME. Se resolvio en la v0.38 usandolibSceKeyboard. Se deja el registro por si a alguien le sirve saber lo que no hay que intentar.
Corrección profunda del teclado USB externo.
Causa raíz
Las versiones 0.34–0.36.1 cargaban los módulos Keyboard/IME e iniciaban la
entrada de texto de SDL, pero no abrían el dispositivo físico. En el backend de
PS4, SDL_StartTextInput() no sustituye a sceImeKeyboardOpen().
Cambios
- Integra el bootstrap nativo de
liborbisKeyboard. - Ejecuta
orbisKeyboardInit()yorbisKeyboardOpen()antes deSDL_Init(). - Fuerza el enlace del archivo estático para que las declaraciones débiles no puedan ser descartadas por el linker.
- Enlaza
libSceImeexplícitamente. - Reintenta la apertura cada dos segundos para admitir conexión en caliente.
- Conserva
SDL_KEYDOWN,SDL_KEYUPySDL_TEXTINPUTcomo capa de eventos. - Añade estado visible del backend nativo en los editores de controles.
- Añade diagnóstico persistente en
/data/np2kai-runtime/logs/latest.log. - Añade
tools/prepare-native-keyboard.sh, que descarga los repositorios oficialesorbisdev/liborbisypsxdev/ps4sdk, compila sololiborbisKeyboardcon OpenOrbis y genera un informe de construcción. - Conserva el formato de configuración 36 y todos los perfiles existentes.
- Actualiza la versión fuente a 0.37 y el SFO a
01.37.
Sin cambios
El core NP2kai, libretro-common, right.sprx, icono, vídeo y audio conservan
los mismos SHA-256 que en v0.36.1.
v0.36.1
Hotfix de compilación para v0.36.
- Mueve
<cstdint>antes de la declaración desceSysmoduleLoadModuleInternal. - Corrige el error de Clang 22:
use of undeclared identifier 'std'. - Conserva
VERSION := 01.36enparam.sfo, ya que PS4 requiere el formatoXX.YY. - No cambia el core, perfiles, interfaz, entrada, audio ni vídeo de v0.36.
v0.36
Unified input
- Preloads the PS4 internal Keyboard and public IME sysmodules before SDL.
- Starts SDL text input after the event subsystem becomes available.
- Handles physical key-down/key-up events and an ASCII text-input fallback.
- Maps arrows/WASD and common keyboard actions onto every frontend screen.
- Keeps ordinary keyboard keys available to the emulated PC-98 during gameplay.
- Reserves F12 as the keyboard pause shortcut; Touchpad and L3+R3 remain fixed.
Adaptive interface
- Tracks the most recently used keyboard or controller.
- Replaces DualShock footer icons with keycaps automatically for keyboard use.
- Uses ENTER, ESC, C, F5, F10 and F12 prompts where appropriate.
Game details overlay
- Selecting a title now opens an overlay instead of launching immediately.
- Shows filename, format, size, full path and active controls profile.
- Provides Play, Controls and Back actions.
- The Controls action edits the selected title's per-game profile before launch.
Compatibility
- Preserves every v0.33-v0.35 profile and binding name.
- Migrates frontend configuration to version 36.
- Uses PS4
APP_VER/VERSIONvalue01.36. - Does not modify the NP2kai core, video pacing or audio path.
v0.35
Controles
- Añade
Ajustes > Controles > Configurar botonesfuera de cualquier juego. - El editor global utiliza el mismo selector completo de 104 asignaciones que el menú de pausa.
- Los diez botones remapeables del perfil predeterminado se guardan ahora como
default_binding_*enfrontend.ini. - Los juegos sin perfil específico heredan el mapeo global completo.
Pausa > Controlescontinúa modificando únicamente el juego actual.- Conserva los perfiles e identificadores de teclas de v0.33/v0.34.
Corrección de Información de la aplicación
- Se separa la versión humana (
0.35) de la versión SFO (01.35). APP_VERyVERSIONusan el formato PS4XX.YY.- Se añade una comprobación previa al empaquetado para impedir versiones SFO
inválidas, IDs inconsistentes, un
right.sprxque no sea SELF o un icono distinto de 512x512 PNG. - El
right.sprxexistente se conserva: su cabecera Orbis SELF es válida y el Makefile oficial de OpenOrbis incluye este módulo ensce_sys/about/.
Compatibilidad
- Formato de configuración actualizado a 35 con migración automática.
- Mantiene el hotfix de Clang 22, el teclado USB, Touchpad fijo y L3+R3 fijo.
- No modifica el core NP2kai, vídeo, audio ni el formato de perfiles por juego.
v0.34.1
Hotfix de compilación para Clang 22 / SDL2 de OpenOrbis.
- Corrige la firma de
sdlModifiersToRetro()para aceptarUint16, que es el tipo real deSDL_Keysym::mod. - Conserva íntegramente las funciones de entrada avanzada de v0.34.
- No cambia perfiles, INI por juego, selector de teclas ni el puente de teclado externo.
v0.34
Added
- Modal, category-based key selector in Pause > Controls.
- 104 selectable assignments covering the complete NP2kai PC-98 101-key table, mouse clicks and an unassigned state.
- L1/R1 category navigation and D-pad/left-stick list navigation.
- Direct assignment by pressing a physical keyboard key while the selector is open.
- SDL keyboard-event bridge to
RETRO_DEVICE_KEYBOARDduring gameplay. - External keyboard status on the per-game controls screen.
Changed
np2kai_joymodeis nowOFF; controller bindings are exposed as real keyboard states instead of using NP2kai's fixed 12-key Joy2Key layer.- Per-game and frontend configuration files now use
config_version=34. - Package version is now
0.34.
Compatibility
- All v0.33 binding names remain valid and load unchanged.
- The Touhou PC-98 preset still reproduces the v0.32 mapping.
- Touchpad and the L3+R3 pause chord remain fixed.
- No video, audio, loading, library or emulation-timing code was intentionally changed.
Hardware caveat
- Source-level and host-stub validation pass.
- External USB keyboard event delivery requires confirmation on real PS4 hardware.
v0.33
Added
- Default controller profile selection in Settings > Controls.
- Generic PC-98, Touhou PC-98 and Mouse-oriented presets.
- Pause > Controls editor with per-game remapping.
- Atomic per-game INI files in
/data/np2kai-runtime/config/games/. - Custom profile state after editing an individual binding.
- Reset-to-default action for each game.
Compatibility
- The v0.32 hard-coded mapping becomes the Touhou PC-98 preset.
- Existing
frontend.inifiles migrate to config version 33. - Touchpad and the L3+R3 pause chord remain fixed.
- Video, audio, emulation timing, loading, library and error paths are unchanged.