Lemon-Project v1.4.0
Several quick saves, new on-screen button modes, moving your content to a microSD card, and much lower memory use. Thanks once more to BitRanger for 21 pull requests (GitHub #25 to #45).
New
- Several quick saves. Each Quick Save goes into a new slot and Quick Load loads the newest, so a badly timed save no longer replaces the only one. "Quick saves to keep" goes from 1 to 4 (2 by default; each takes 1 to 2 GB). Load save, in the in-game menu and as a hotkey, lists this session's saves with a picture and how long ago each was made. Loading an older one asks first, because it deletes the newer ones. (BitRanger)
- Toggle and turbo on on-screen buttons. In the overlay editor, tap a button and choose how it behaves: Normal, Toggle (a tap holds it down, the next tap lets it go, and it looks pressed meanwhile) or Turbo (it repeats while your finger is on it). Saved with the layout, so each game can have its own.
- Button slide. A new option in the overlay's menu lets a finger move from one on-screen button to another without lifting it. Off by default.
- Move your content to another folder or a microSD card (Settings → Content and data → Custom Paths → NAND Directory). Lemon now offers to copy the firmware, updates, DLC and saves, checks the free space first and shows the progress. Afterwards you choose whether to delete the old copy. A card formatted as FAT32 can't hold files over 4 GB; exFAT can.
- Settings. The X on a setting a game overrides is now coloured, the default option is marked in the general settings' lists, and Docked Mode sits right under Resolution.
Performance and memory (BitRanger)
- Much less memory. Memory a game reserves but never writes no longer takes real memory, and it is given back when a game closes. Before, a game with a 3.2 GB heap could take Lemon to about 6.4 GB and get it killed on 12 GB devices.
- Games that rewrite the same memory every frame (vertex data, constants, video they decode themselves) no longer fault on it every frame. In one game those faults took about two CPU cores' worth of work: it ran at half speed and its audio stuttered.
- A CPU access to an image the GPU drew no longer waits for the whole command list, and images a game reads back every frame are copied at the next fence instead.
- Games with dynamic resolution no longer upload old data for each new render size, and draws that can't write the depth buffer no longer mark it as changed.
- The in-game menu no longer redraws itself on every frame while closed, which took most of a CPU core on 120 Hz handhelds.
Quick Save/Load (BitRanger)
- Saving and loading use far less memory: both go through the game's memory in slices, and images are copied back in batches. Android killed the emulator during some of them on devices short of memory.
- Many cases where a load crashed or froze the game are gone: threads woken, asleep, ended or started again since the save get the right state back, and 32-bit games keep their "no timeout" waits.
- Games that unmap and map parts of their memory as they go no longer have their loads refused a few seconds after saving.
- When a save can really no longer be loaded, Lemon says so instead of "Game is busy".
Fixed
- The streaks across the screen on Adreno from a kind of pixel shader shuffle. (BitRanger)
- Closing a game crashed now and then in the renderer, and a game running its own trap instruction took the whole app down. (BitRanger)
- A deadlock between the CPU core, the GPU and the syncpoints. (BitRanger, from Eden)
- An on-screen button stayed pressed in the game if the system cancelled the touch, for example with an edge gesture.
- Changing the NAND folder left Lemon reading the old one until the app restarted.
- The library's shortcut labels fit on one line, and "Install content" is now "Manage data". (BitRanger)
From the Eden project
Fixes by its developers that were also missing here: video playback (Mario Strikers and Absolum, VP9 segmentation), Disco Elysium's float conversion, viewport flip with a negative scale (Aggelos), Metroid Prime Remastered's shadows, conditional bindless texture tracking, TLS patching for modules a game loads at run time, the NCE interpreter's zero register, Splatoon 2's BCAT file names, mods and settings shared with programs bundled in a game, and an updated zstd that fixes data corruption when reading solid NSZ files. The GPU thread is no longer pinned to the fast cores.
Install
Android 12 or newer, arm64. Signed with Lemon's key, like 1.3.0: it updates in place and keeps your data.
Lemon-v1.4.0-standard.apk · Lemon-Lite-v1.4.0-lite.apk · Lemon-Lite-Spoofed-v1.4.0-lite-spoofed.apk
Lemon-Project v1.4.0 (español)
Varios guardados rápidos, nuevos modos para los botones en pantalla, mover el contenido a una microSD y mucho menos consumo de memoria. Gracias una vez más a BitRanger por 21 pull requests (GitHub #25 a #45).
Nuevo
- Varios guardados rápidos. Cada guardado rápido va a una ranura nueva y la carga rápida carga el más reciente, así que un guardado a destiempo ya no sustituye al único que tenías. "Guardados rápidos que conservar" va de 1 a 4 (2 por defecto; cada uno ocupa de 1 a 2 GB). Cargar guardado, en el menú del juego y como atajo, muestra los guardados de la sesión con una imagen y el tiempo que hace de cada uno. Cargar uno anterior pregunta antes, porque borra los más recientes. (BitRanger)
- Toggle y turbo en los botones en pantalla. En el editor de la superposición, toca un botón y elige cómo se comporta: Normal, Fijar (un toque lo deja pulsado, el siguiente lo suelta, y se ve pulsado mientras tanto) o Turbo (se repite mientras tengas el dedo encima). Se guarda con el diseño, así que cada juego puede tener el suyo.
- Deslizamiento entre botones. Una opción nueva en el menú de la superposición permite pasar el dedo de un botón en pantalla a otro sin levantarlo. Viene desactivada.
- Mueve el contenido a otra carpeta o a una microSD (Ajustes → Contenido y datos → Rutas personalizadas → Directorio NAND). Lemon ofrece copiar el firmware, las actualizaciones, los DLC y las partidas, comprueba antes el espacio libre y muestra el progreso. Después eliges si borrar la copia antigua. Una tarjeta en FAT32 no admite archivos de más de 4 GB; una exFAT sí.
- Ajustes. La X de un ajuste que un juego cambia ahora tiene color, la opción por defecto aparece marcada en las listas de los ajustes generales, y el Modo sobremesa está justo debajo de Resolución.
Rendimiento y memoria (BitRanger)
- Mucha menos memoria. La memoria que un juego reserva y nunca escribe ya no ocupa memoria real, y se devuelve al cerrar el juego. Antes, un juego con 3,2 GB de heap podía llevar a Lemon a unos 6,4 GB y hacer que el sistema lo cerrara en dispositivos de 12 GB.
- Los juegos que reescriben la misma memoria en cada fotograma (datos de vértices, constantes, vídeo que decodifican ellos mismos) ya no provocan fallos de página en ella en cada fotograma. En un juego esos fallos costaban el trabajo de unos dos núcleos de CPU: iba a la mitad de velocidad y el audio daba tirones.
- Un acceso de la CPU a una imagen dibujada por la GPU ya no espera a toda la lista de comandos, y las imágenes que un juego lee en cada fotograma se copian en el siguiente fence.
- Los juegos con resolución dinámica ya no suben datos antiguos en cada tamaño nuevo, y los dibujados que no pueden escribir en el búfer de profundidad ya no lo marcan como modificado.
- El menú del juego ya no se redibuja en cada fotograma mientras está cerrado, algo que costaba casi un núcleo de CPU en consolas portátiles de 120 Hz.
Guardado y carga rápidos (BitRanger)
- Guardar y cargar usan mucha menos memoria: ambos recorren la memoria del juego por partes y las imágenes se copian en tandas. Android cerraba el emulador en algunos casos en dispositivos con poca memoria.
- Desaparecen muchos casos en los que una carga cerraba o congelaba el juego: los hilos despertados, dormidos, terminados o iniciados de nuevo desde el guardado recuperan el estado correcto, y los juegos de 32 bits conservan sus esperas "sin tiempo límite".
- Los juegos que desmapean y mapean partes de su memoria sobre la marcha ya no ven rechazada la carga a los pocos segundos de guardar.
- Cuando un guardado ya no se puede cargar de verdad, Lemon lo dice en vez de "El juego está ocupado".
Arreglado
- Las líneas que cruzaban la pantalla en Adreno por un tipo de operación en los shaders de píxeles. (BitRanger)
- Cerrar un juego provocaba un fallo de vez en cuando en el renderizador, y un juego que ejecutaba su propia instrucción de trampa tiraba toda la aplicación. (BitRanger)
- Un bloqueo mutuo entre el núcleo de CPU, la GPU y los syncpoints. (BitRanger, de Eden)
- Un botón en pantalla se quedaba pulsado en el juego si el sistema cancelaba el toque, por ejemplo con un gesto desde el borde.
- Cambiar la carpeta NAND dejaba a Lemon leyendo la antigua hasta reiniciar la aplicación.
- Las etiquetas de los accesos de la biblioteca caben en una línea, e "Instalar contenido" ahora es "Gestionar datos". (BitRanger)
Del proyecto Eden
Arreglos de sus desarrolladores que aquí también faltaban: reproducción de vídeo (Mario Strikers y Absolum, segmentación VP9), la conversión de flotantes de Disco Elysium, el volteo del viewport con escala negativa (Aggelos), las sombras de Metroid Prime Remastered, el seguimiento de texturas bindless condicionales, el parche TLS para módulos que un juego carga en ejecución, el registro cero del intérprete NCE, los nombres de archivo BCAT de Splatoon 2, mods y ajustes compartidos con los programas incluidos en un juego, y un zstd actualizado que corrige datos corruptos al leer NSZ sólidos. El hilo de la GPU ya no se fija a los núcleos rápidos.
Instalación
Android 12 o superior, arm64. Firmada con la clave de Lemon, como la 1.3.0: se actualiza encima y conserva tus datos.
Lemon-v1.4.0-standard.apk · Lemon-Lite-v1.4.0-lite.apk · Lemon-Lite-Spoofed-v1.4.0-lite-spoofed.apk