HLE y LLE no clasifican emuladores: describen cada chip, uno por uno
La etiqueta nunca describió al emulador, sino a cada pieza por separado. Dolphin lo demuestra dos veces: reescribe el sistema operativo del Wii en alto nivel, y su emulación de bajo nivel del chip de audio corre sobre un firmware que alguien tuvo que escribir a mano.
HLE y LLE —emulación de alto y de bajo nivel— no clasifican emuladores: describen qué hace el programa con cada chip de la consola, por separado. En LLE el emulador ejecuta el código original de esa pieza, instrucción por instrucción. En HLE lo intercepta: mira qué le pide el juego y devuelve el resultado con código escrito de cero. Una consola son varias piezas repartiéndose el trabajo —el Super Nintendo reparte hasta el dibujo del horizonte entre dos componentes—, y el emulador decide una por una.
Dolphin lo tiene escrito en su código. El núcleo de IOS se presenta como «HLE for the IOS kernel» —el sistema operativo del Wii, reescrito—, y a la vez el emulador trae dos motores para el chip de audio: el menú los llama «HLE (recommended)» y LLE, y el ajuste DSPHLE viene activado de fábrica. «Dolphin es HLE» no dice nada mientras no se diga de qué chip se habla.
La ecuación fácil se rompe por los dos lados
El error común es leer LLE como «preciso» y HLE como «rápido», dos calidades de producto. No lo son. paraLLEl-RDP emula el chip gráfico del Nintendo 64 a bajo nivel sobre la tarjeta gráfica, busca ser bitexact contra el renderizador de referencia y su autor midió entre 2 000 y 5 000 imágenes por segundo en GPU de gama media.
Reescribir tampoco es la opción barata: es la cara que se paga una vez. Los microcódigos de Factor 5 para Indiana Jones and the Infernal Machine y Battle for Naboo costaron seis meses —olivieryuyu descifrando, gonetz implementando— y unas 2 300 líneas, terminadas el 26 de mayo de 2018. El de Rogue Squadron, antes, unas 1 300.
La precisión tampoco cae siempre del mismo lado. Dolphin recomendó durante años volcar el DSP-ROM de la consola y usar LLE porque su audio de alto nivel estaba roto de raíz. Tras dos reescrituras, en agosto de 2015 declaró que «in the vast majority of games, Dolphin's HLE audio implementation is now at parity with the LLE audio». El parche pasó a ser la excepción.
Lo que sí cuesta el bajo nivel
El peaje real no es potencia: es el archivo. Para ejecutar el código de un chip hay que tenerlo. Al cerrar el LLE de los coprocesadores del Super Nintendo, byuu lo escribió sin rodeos: el firmware de esos chips pasó a ser obligatorio para jugar muchos juegos importantes. Es el mismo archivo del glosario de la BIOS, y el mismo que no sale en el volcado de un cartucho.
Dolphin esquivó ese peaje de la forma más irónica: alguien escribió a mano un reemplazo legal de la IROM del DSP —primera versión el 31 de julio de 2011; la segunda, de delroth, el 16 de marzo de 2013—. Su emulación de bajo nivel corre de serie sobre una reimplementación del firmware. Cuando una lista de compatibilidad dice «jugable» y otra dice «perfecto», rara vez habla de tu procesador: habla de qué subsistemas alcanzó a rehacer alguien.
[ Fuentes ]
- The New Era of HLE Audio — «In the vast majority of games, Dolphin's HLE audio implementation is now at parity with the LLE audio»; antes, los desarrolladores «más o menos le decían al usuario que volcara el DSP-ROM de su GameCube/Wii», porque «LLE audio is incredibly demanding» · Dolphin Emulator (delroth, MayImilae, JMC47) · 2015-08-19
- The Rise of HLE Audio — «HLE audio could only approximate what the DSP does with C++ code, while LLE audio translated the binary code into x86»; DSP-LLE exigía volcados del DSP ROM de una GameCube o Wii · Dolphin Emulator (JMC47) · 2014-11-12
- MainSettings.cpp — «const Info<bool> MAIN_DSP_HLE{{System::Main, "Core", "DSPHLE"}, true};»: el motor de alto nivel es el valor por defecto (la interfaz lo rotula «HLE (recommended)» en AudioPane.cpp) · Dolphin Emulator / GitHub
- IOS.h — «HLE for the IOS kernel: IPC, device management, syscalls, and Dolphin-specific, IOS-wide calls»: el mismo emulador hace alto nivel del sistema operativo del Wii · Dolphin Emulator / GitHub
- Legal GC/WII DSP IROM replacement — v0.1 (LM, 31/jul/2011), v0.2 (delroth, 16/mar/2013), v0.4 (Tilka y Pokechu22, 17/ago/2021): el reemplazo escrito a mano sobre el que corre el DSP-LLE de Dolphin · Dolphin Emulator / GitHub
- paraLLEl-RDP README — «Much faster LLE RDP emulation of N64 compared to a CPU implementation»; «2000 - 5000 VI/s being achieved on mid-range desktop GPUs», con salida bitexacta contra Angrylion-Plus · Themaister / GitHub
- HLE implementation of microcodes for «Indiana Jones» and «Battle for Naboo» completed — seis meses de trabajo, «circa 2300 (sic!) lines of source code after all cleanups»; el de Rogue Squadron, «circa 1300 lines». Descifrado por olivieryuyu, implementado por gonetz · GLideN64 (Sergey Lipskiy) · 2018-05-26
- The State of Emulation, Part IV — «As a consequence of DSP LLE, coprocessor firmware became a requirement to play many major SNES games»; el LLE cubrió DSP-n (NEC uPD7725), ST-01n, ST-018 y Cx4 (Hitachi HG51B169) · byuu / bsnes.org · 2016-04-03
Lo que importó de verdad
Un correo por semana con las 5 noticias que mueven la industria y el mejor video vertical. Nada de refritos de notas de prensa.
[ Síguenos donde leas ]
Sin algoritmo que decida por ti: el correo y el RSS llegan enteros. En las redes publicamos los cortes.