Bueno, pues ya (parece que) ha llegado a su culminación el gran proceso de optimización de exomizer comenzado por Urusergi, y continuado de forma grandiosa por Antonio Villena, con apenas algunas modestas contribuciones mías. Por una parte, los decompresores se han reducido de forma brutal y son un pelín más rápidos, y por otra se han generado versiones alternativas (no tan pequeñas) optimizadas en velocidad, de forma que podemos escoger entre 4 variantes. La variante 1 resulta especialmente atractiva, ya que al precio de entre 3 y 5 bytes, produce una ganancia del 14% de velocidad.
Aparte de eso, el programa optimizador (exoopt) ha sido reescrito desde cero por Antonio Villena, de forma que se le puede pasar como parámetro la velocidad (y dirección, que antes siempres se utilizaba hacia delante) deseada, y generará automáticamente el descompresor necesario (se le pueden incluso introducir varios archivos como parámetros, y generará la versión más simple si no aparecen cadenas de literales y la completa si aparecen). Este nuevo optimizador aparte de lo que hacía antes (invertir el orden de lectura de los bits, y quitar 2 bits redundantes) efectua otros cambios en los datos, que a veces pueden ser contraproducentes (aumenta un pelín el tamaño), pero permiten simplificar más aún los descompresores.
Las nuevas versiones se pueden encontrar aquí:
http://emuscriptoria.svn.sourceforge.net/viewvc/emuscriptoria/deexo/y un exoopt ya compilado, aquí:
http://retrolandia.net/foro/showthread.php?tid=48&page=6La historia de las optimizaciones, por si a alguien le interesa, comenzó por aquí:
http://amstrad.es/forum/viewtopic.php?f=6&t=2608