Sobre el proyecto
PocketHLE es un emulador experimental de alto nivel (HLE) para juegos de Pocket PC 2002/2003 y Windows Mobile 5/6, dirigido a ejecutables nativos ARM de Windows CE empaquetados en archivos .CAB. En lugar de emular un dispositivo Windows CE completo, carga el ejecutable original del juego, ejecuta su código ARM a través de un backend de CPU y proporciona implementaciones limpias del lado del host de las APIs de Windows CE que el juego espera. Está inspirado en touchHLE y EKA2L1, con un flujo de trabajo de lanzador/biblioteca influenciado por j2me-loader.
Las capacidades descritas en el README incluyen: importar y desempaquetar archivos .CAB; restaurar nombres de archivo largos y rutas de instalación desde _setup.xml o la cabecera binaria de instalación MSCE; seleccionar el ejecutable del juego deseado; cargar imágenes PE nativas ARM y MIPS e inspeccionar importaciones; ejecutar código ARM con el backend Unicorn Engine; interceptar llamadas importadas de DLL de Windows CE mediante thunks HLE; resolución de ordinal a nombre para coredll.dll y aygshell.dll; emular rutas centrales de ventanas, GDI, GAPI, registro, sistema de archivos, temporización, entrada y audio; renderizar framebuffers de software en el frontend de escritorio y en el frontend Android SurfaceView/OpenGL; una biblioteca de juegos compartida con ajustes por juego en escritorio y Android; y compilaciones para Linux/Windows/Android mediante GitHub Actions.
El proyecto afirma que su prueba reproducible actual cubre Asphalt 4 en WVGA con audio PCM capturado y el arranque de la pantalla de título de Call of Duty 2 a través de la capa OpenGL ES; otros títulos (Zuma Deluxe, Bejeweled, Asphalt 2 3D, Crazy Taxi, Diamond Twister, Splinter Cell Conviction) tienen trabajo de compatibilidad o sondas bajo proof/, pero el README advierte contra describirlos como totalmente verificados. Señala explícitamente que PocketHLE no es un emulador completo de Windows CE: algunos juegos se detienen durante la inicialización de CRT, importaciones dinámicas, configuración de hilos de trabajo o APIs no implementadas, y un arranque exitoso o el primer fotograma no implica que un juego sea jugable de principio a fin.
Componentes de la arquitectura: pocket-cli (CLI/capturas), pocket-desktop (lanzador egui), pocket-android (Kotlin + JNI), pocket-core (emulador/VFS), pocket-cab (instalador CAB), pocket-pe (PE ARM/MIPS), pocket-library (base de datos de juegos), pocket-kernel (proceso/GDI/despacho HLE), pocket-cpu (stub/Unicorn), pocket-winceapi (coredll/gx/hss). Flujo de inicio: extracción del CAB y reconstrucción del registro, análisis del PE, mapeo de imagen con parcheo de IAT a thunks HLE, ejecución del código invitado, despacho de API a manejadores Rust y visualización del framebuffer con reenvío de entrada del host.
Uso: descargar un archivo de lanzamiento, importar un .CAB obtenido legalmente y elegir el juego en el lanzador de escritorio o Android. Los ejemplos de CLI incluyen inspect-cab, run con --cpu unicorn, --dump-frames-to y --max-frames, además de pe-info; se admiten entradas .exe y .zip, y --cpu stub es para pruebas de solo traza/cargador. Las instrucciones de compilación cubren Linux (Rust 1.85+, dependencias nativas GTK/X11/Wayland, cargo build/test, compilaciones con la característica unicorn), Windows (toolchain MSVC + CMake) y Android (Android Studio Iguana+, NDK r26+, cargo-ndk, Gradle). El diseño de la biblioteca utiliza library.json, config.json y directorios por juego con game.json, source.cab y archivos extraídos; la ubicación predeterminada es ~/.local/share/PocketHLE/library o el equivalente de la plataforma.
Los elementos de la hoja de ruta incluyen completar las rutas de inicio de CRT y ARM heredado, ampliar la compatibilidad de importaciones dinámicas y de hilos/tiempo de ejecución, mejorar la cobertura de recursos/GDI/diálogos, un mapeo más amplio de gamepad/teclado/táctil, mezcla de audio, más capturas de compatibilidad reproducibles y mejoras de UX y diagnóstico en escritorio/Android. El README incluye un aviso legal de que no se distribuyen DLL de sistema de Microsoft con derechos de autor, firmware ni activos de juegos, y que la capa de API es una reimplementación limpia; los usuarios son responsables de sus propias copias de juegos. La licencia es dual Apache-2.0 O MIT. Se aceptan contribuciones, informes de compatibilidad y trazas a través del Discord del proyecto.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.