Files
2026-07-28 06:34:41 +02:00

9.5 KiB
Raw Permalink Blame History

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.a no existe en las versiones actuales de OpenOrbis, y ademas el teclado USB no va por el IME. Se resolvio en la v0.38 usando libSceKeyboard. 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() y orbisKeyboardOpen() antes de SDL_Init().
  • Fuerza el enlace del archivo estático para que las declaraciones débiles no puedan ser descartadas por el linker.
  • Enlaza libSceIme explícitamente.
  • Reintenta la apertura cada dos segundos para admitir conexión en caliente.
  • Conserva SDL_KEYDOWN, SDL_KEYUP y SDL_TEXTINPUT como 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 oficiales orbisdev/liborbis y psxdev/ps4sdk, compila solo liborbisKeyboard con 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 de sceSysmoduleLoadModuleInternal.
  • Corrige el error de Clang 22: use of undeclared identifier 'std'.
  • Conserva VERSION := 01.36 en param.sfo, ya que PS4 requiere el formato XX.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/VERSION value 01.36.
  • Does not modify the NP2kai core, video pacing or audio path.

v0.35

Controles

  • Añade Ajustes > Controles > Configurar botones fuera 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_* en frontend.ini.
  • Los juegos sin perfil específico heredan el mapeo global completo.
  • Pausa > Controles continú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_VER y VERSION usan el formato PS4 XX.YY.
  • Se añade una comprobación previa al empaquetado para impedir versiones SFO inválidas, IDs inconsistentes, un right.sprx que no sea SELF o un icono distinto de 512x512 PNG.
  • El right.sprx existente se conserva: su cabecera Orbis SELF es válida y el Makefile oficial de OpenOrbis incluye este módulo en sce_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 aceptar Uint16, que es el tipo real de SDL_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_KEYBOARD during gameplay.
  • External keyboard status on the per-game controls screen.

Changed

  • np2kai_joymode is now OFF; 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.ini files 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.