Zallax
Usuario mítico
Buenas a todos.
Para los que no me conozcáis, soy Zallax. Algunos quizá me recordéis de hace ya bastante tiempo, porque hará unos 20 años estuve metido en el mundillo del ROM Hacking.
Desde entonces mi vida profesional ha ido por otros caminos. Actualmente soy Desarrollador Web y trabajo principalmente en proyectos relacionados con la integración de inteligencia artificial en universidades europeas.
Pero Pokémon siempre ha seguido por ahí. Y con el auge en los últimos años de los proyectos decompilados de los juegos clásicos, me empezó a picar otra vez la curiosidad.
¿Cómo empezó todo esto?
Durante los últimos años he estado probando los distintos modelos de lenguaje que han ido apareciendo y viendo hasta qué punto podían trabajar sobre proyectos de software reales.
Una de las pruebas que acabó creciendo bastante más de lo esperado fue utilizar el código decompilado de Pokémon Esmeralda.
Lo primero que hice fue experimentar con llevar Pokémon Esmeralda a ejecutarse de forma nativa en Nintendo DS, añadiendo además algunas funciones adicionales para aprovechar la segunda pantalla de la consola.
A partir de ahí fueron apareciendo diferentes proyectos que llevaban las primeras generaciones de Pokémon hacia una estética Voxel / 2.5D, y me pareció interesante intentar trasladar esa misma idea a la tercera generación.
Hice algunas pruebas iniciales en PC, pero terminé abandonándolas porque, en aquel momento, la capacidad de los LLM para trabajar con este tipo de código todavía era bastante limitada.
Hay algo importante que aclarar aquí: yo no soy desarrollador de C ni de los lenguajes utilizados habitualmente en este tipo de proyectos. Mi experiencia profesional está principalmente en desarrollo web.
Sin embargo, con la mejora bastante considerable que han tenido estos modelos recientemente, decidí volver a intentarlo.
Primero comencé portando Pokémon Esmeralda a Nintendo 3DS y, una vez que la base empezó a funcionar correctamente, comencé también a experimentar con una representación del mundo en Voxel 2.5D.
Viendo que los modelos actuales ya eran capaces de trabajar de forma razonablemente consistente con el proyecto, y comprobando además que era viable hacerlo funcionar con un rendimiento decente en el hardware de Nintendo 3DS, fui avanzando poco a poco con la idea.
Lo que comenzó como un experimento ha terminado convirtiéndose en una versión relativamente estable sobre la que sigo trabajando.
Actualmente estoy modelando progresivamente los mapas del juego en estilo Voxel 2.5D, adaptando elementos del escenario a esta nueva representación, aprovechando las dos pantallas de Nintendo 3DS y corrigiendo errores y problemas de rendimiento conforme van apareciendo.
Además, hay determinadas zonas del juego, como la introducción o las batallas, donde ya se puede activar el efecto 3D estereoscópico de la consola. Según vaya viendo qué posibilidades ofrece el hardware y dónde tiene sentido utilizarlo, iré probando a activarlo también en más partes del juego.
Mi intención es seguir avanzando hasta completar el proyecto.
Rendimiento
Todo el desarrollo y las pruebas principales las estoy realizando personalmente sobre una Nintendo 3DS clásica.
Aunque todavía hay algunos tirones y zonas que requieren optimización, el juego se mueve generalmente a 60 FPS.
Precisamente una de las cosas que quiero mantener como prioridad es que el proyecto siga siendo perfectamente utilizable en el modelo original de Nintendo 3DS, sin depender de una New Nintendo 3DS para funcionar correctamente.
Sobre el uso de Inteligencia Artificial
Quiero dejar esto completamente claro desde el principio: este proyecto está creado utilizando Inteligencia Artificial.
Los modelos de lenguaje han sido la herramienta que me ha permitido experimentar con una base de código y unos lenguajes que están fuera de mi ámbito profesional habitual.
No pretendo ocultarlo ni vender el proyecto como otra cosa.
Tampoco quiero que el hilo se convierta en otro debate sobre inteligencia artificial, programación o sobre si un proyecto desarrollado de esta forma tiene más o menos mérito.
Si no estás de acuerdo con este tipo de desarrollo, simplemente ignora el proyecto y sigue con tu vida.
Prefiero que aquí hablemos del juego, de la parte técnica, de bugs, de posibles mejoras y de Pokémon.
Estado actual
El proyecto se encuentra todavía en una etapa bastante inicial.
Hay errores evidentes, elementos sin terminar, mapas pendientes de adaptar y muchas cosas que todavía quiero mejorar.
Aun así, técnicamente el juego debería ser jugable de principio a fin.
Teniendo en cuenta el estado actual del proyecto, existen bugs o situaciones que todavía he encontrado.
En cuanto al modo Voxel 2.5D, todavía queda bastante trabajo por delante. Actualmente solo una parte de los edificios, árboles, carteles y relieves del terreno están modelados, por lo que muchas zonas del mapa y prácticamente todos los interiores todavía se muestran planos. La idea es ir ampliando progresivamente las zonas modeladas conforme avance el desarrollo.
Capturas de pantalla

Repositorio
El código del proyecto está disponible aquí:
GitHub - Pokémon Esmeralda 3Ds Dual Screen
El repositorio no distribuye contenido del juego ni archivos extraídos de la ROM. Contiene el código propio del port, las herramientas necesarias y un builder que genera los datos necesarios a partir de tu propia copia de Pokémon Esmeralda.
Cómo jugar
Para jugar necesitas:
- Una consola de la familia Nintendo 3DS/2DS con Custom Firmware (Luma3DS).
- Acceso al Homebrew Launcher.
- Una copia limpia de Pokémon Esmeralda USA/Europa obtenida de tu propio cartucho.
En Windows el proceso es bastante sencillo:
- Descarga la última versión de Emerald3DS-vX.Y.Z-Windows.zip desde la sección de Releases:
GitHub Releases - Extrae el contenido del archivo ZIP.
- Ejecuta Emerald3DS-Builder.exe.
- Selecciona tu ROM de Pokémon Esmeralda y la tarjeta SD de tu Nintendo 3DS.
- Pulsa Install.
- Introduce la tarjeta SD en la consola e inicia Pokémon Emerald 3Ds Dual Screen desde el Homebrew Launcher.
El builder instalará automáticamente los archivos necesarios en:
Código:
/3ds/emerald3ds/
Cada versión del proyecto incluye su propio builder. Si actualizas a una versión nueva, simplemente tendrás que ejecutar de nuevo el builder para regenerar el paquete de datos correspondiente.
La ROM compatible actualmente es Pokémon Emerald USA/Europa con el siguiente SHA-1:
Código:
f3ae088181bf583e55daf962a92bb46f4f1d07b7
Código:
python -m emerald3ds_builder install --rom <ROM> --sd <card>
Iré actualizando tanto el repositorio como este post conforme vaya avanzando el proyecto.
Feedback
Si alguien se anima a probarlo, cualquier feedback es bienvenido.
Especialmente si encontráis bugs, problemas de rendimiento, errores visuales, comportamientos extraños o zonas del mapa que den problemas.
También me interesa saber qué os parece la adaptación del estilo Voxel a Hoenn, el uso de la segunda pantalla y el efecto 3D en las zonas donde ya está disponible.
Gracias a todos los que os animéis a probarlo, reportar errores o simplemente seguir el desarrollo.