Entrevista a Chui

Fecha: Octubre 2007

Entrevistamos a Chui. Programador de emuladores para DreamCast y GP32. (http://chui.dcemu.co.uk/ )

 

Hola Chui. Gracias por aceptar esta entrevista ¿Qué tal?

Hola, estoy bien, con el lío de siempre. Espero contestarte lo mejor posible.

 

Cuéntanos quien eres y a que te dedicas. ¿Eres de España? ¿Qué datos personales puedes darnos?

Me llamo Daniel, tengo 33 años, soy ingeniero informático, estoy casado y tengo un hijo de pocos meses. En lo profesional me dedico a implantar, administrar, monitorizar y arbitrar sistemas en Telefónica, pero en lo personal me gusta mucho el mundo de la emulación, remakes y retro-scene en general...

Nací en Madrid, he vivido muchos años en Aragón, pero ahora mismo llevo unos años viviendo en Madrid. Por lo que mucha gente en Madrid me llama 'El Maño' y en Aragón me llaman 'El Madrileño'. Particularmente me da igual, no soy amigo de nacionalismos de ningún tipo.

 

¿Cual fué tu primer ordenador o tu primera consola?

Mi primera consola (aparte de los míticos Game&Watch) fue un aparato que podías seleccionar varios juegos todos con gráficos en forma de palitos al estilo de Pong.

Pero mi primer ordenador fue un Spectrum 48K (el de las teclitas de goma) donde aprendí a programar en Basic y algunos pequeños pinitos (rutinas) en Assembler Z80, anteriormente conocido como Código Maquina.

Mas tarde en la adolescencia, logré convencer a mis padres para comprar un AtariST donde programé en Logo, Basic y sobretodo en Assembler 68000. Pero a los pocos años mi hermano se compró un Amiga500 con el dinero de sus primeros sueldos, por lo que también tuve la ocasión de trabajar para esta máquina.

La única consola que he llegado a tener, aparte de la prehistórica de los gráficos de palo, fue una Super Nintendo algo quemada que un vecino me dio; creo que este vecino la robó de Erbe cuando se quemó el almacén o algo así. La cuestión es que solía alquilar un juego muchos fin de semana y solía jugar bastante.

Y ya bien mayorzote, me compré mi primer PC (un 486) al entrar en la universidad y la Dreamcast hace unos 6 años.

 

¿Qué aparatejos coleccionas?

No muchos: GP32, GP2X, Dreamcast, DS y Wii. Y sólo tengo 2 ordenadores: un simple portátil Dell y un MacMini. Los que más cariño les tengo es a la GP32 y a la Dreamcast, aparte de los que ya no tengo: ZX-Spectrum y AtariST.

 

¿Y a qué juegos o consolas juegas ahora, si es que tienes tiempo?

Hace meses que no tengo mucho tiempo para jugar, con el nacimiento de mi hijo prefiero aprovechar en otras cosas el poco tiempo de ocio que tengo.

Pero cuando juego, a parte de mis propios emuladores (cuando saco una nueva versión de alguno suelo pasarme una semana jugando en él), suelo jugar a la DS o a la Wii; y me suelen gustar los juegos tipo arcade y acción en general.

cita

¿Puedes explicar el significado de tu nick?

No es más que una tontería: es una especia de diminutivo de Chewaka de la guerra de las galaxias.
La verdad es que no recuerdo ni el momento exacto, pero con una panda de amigos solíamos entrar con nicks de la guerra de las galaxias al IRC.

Supongo que lo he seguido estos años por comodidad, así no tengo que pensar en otro para entrar en foros y chats.

 

¿Cuándo empezaste a interesarte en la programación de emuladores?

Los emuladores me interesaron desde el primer día que jugué a uno: creo recordar que fue uno de los primeros MAME que cargaba unos 10 juegos. Me pareció totalmente alucinante y me engancho para siempre.

Luego el primer emulador que le metí buena mano fue a un port de Virtual Boy Advanced para GP32: el resultado no fue muy bueno pero aprendí bastante.

Tras un tiempo, cuando empezó realmente todo fue cuando me animó Ron a portar a Dreamcast un emulador de AtariST y luego Fox con su core de motorola 68000.

Luego para la Dreamcast todos los 4ALL que realmente son multiplataforma, por lo que han sido fácilmente portados a otros sistemas en muchos casos; también he portado Fenix para Dreamcast, las librerías SDL y últimamente OpenGL.

 

Mirando tu página, tus principales emuladores actuales son para DreamCast, pero antes habías hecho algo para GP32.

Empecé a meterme en harina con la GP32 portando las librerías SDL para GP32, con un remake multiplataforma de 'Highway encounter' llamado Vorton y finalmente portando Fenix para GP32 que cosechó mucho éxito ya que produjo que mucha gente se animará a crear con facilidad sus propios juegos para la GP32.

 

Lapolla y Elconhio son trabajos tuyos. (Me imagino la situación, un ingles y un español, “Te voy a enseñar una cosa” “¿El que?” “Lapolla”). ¿Qué nos comentas sobre ellos? (Los programas, eh… los programas)

Lo primero que hice para GP32 fue el port de SDL, 'Lapolla' y 'Elchohio' fueron dos simples players usando el SDL con nombre de coña, no hay mucho más que contar sobre dichos trabajos.
Mi aportación principal para GP32 fue el port de SDL y el de Fenix.

 

¿Qué te parecen las consolas GP32 y GP2X?

Adquirí una GP32 cuando sólo era posible comprarla en Corea (aquí en España la teníamos solo unas 7 personas). Era el gran sueño, una consola de mano con la cual programar y jugar a emuladores a gogó.

Los que empezamos nos pusimos con diferentes cosas, a lo que nos interesaba en ese momento: MrSpiv programó principalmente el software base, RoberBrown el port de Doom, Ryleh portó sus grandes emuladores y yo porte SDL y luego Fénix.

Luego con el tiempo, al hacerse más y más popular me fui volcando más en la Dreamcast por varios motivos: está más abandonada por la scene y jugar en la TV por el motivo que sea me gusta más, sobre todo para jugar a emuladores.

La GP2X me parece la evolución lógica de la GP32 y por lo que veo va mejorando poco a poco. Ahora mismo si te gusta la emulación, remakes y demás homebrew, esta es tu consola. Es una gran máquina en definitiva, aunque he de reconocer que apenas la uso. 

 

emuFénix es un lenguaje de programación tipo DIV, mejorado  y Open Source. ¿Has hecho el port a la dreamcast?

Y el de GP32 que tanto éxito tuvo, para GP2X se encargaron otros. Primero DIV comercialmente y luego Fénix de forma libre, son mucho más que un lenguaje de programación, también es un conjunto de utilidades y una maquina virtual como Java pero orientado a juegos.

Lo que hace especial a DIV/Fénix es que sin tener muchos conocimientos de programación se puede programar un juego con cierta facilidad.

 

¿Cualquier juego programado en Fénix funciona en GP32? ¿A buena velocidad?

No claro, tiene que ajustarse a las capacidades propias de la GP32, por tanto se podría decir al contrario, un juego en Fénix que funciona en GP32, funcionará en casi cualquier sitio.

Esto no es ninguna tontería, permite hacer un juego para GP32 desde el PC y probando la gran mayoría de las veces en el mismo PC, sabiendo que se debe usar 320x240 como resolución, ser muy cuidadoso con la RAM, etc..

 

emu¿Qué es el Dreamcast SDL driver?

No es más que el port de las librerías SDL para Dreamcast. Permiten programar de forma multiplataforma: lo programado en un PC para PC se puede compilar para Dreamcast y ejecutar con facilidad.

 

Fénix versión Dreamcast y SDL driver,… con esta parejita cualquiera puede hacer juegos para dreamcast. ¿Se ha notado en los juegos caseros que se han lanzado últimamente?

Sí, esa es la idea. Se han realizado varios ports de juegos SDL y remakes Fénix, muchos de ellos desde la factoría dciberia.net.

La verdad es que estoy contento con ambos proyectos y espero que con el nuevo añadido OpenGL se puedan ver cosas aún mejores, como mi port de Neverball para Dreamcast: Aquí la primera versión alpha

 

Y ahora encima te atreves a portar OpenGL. ¿Exactamente qué es lo que estás haciendo y cómo afecta a los programadores? ¿A qué consolas lo estás portando?

Es una implementación de OpenGL para Dreamcast, que no es poco, y solo estoy continuando el trabajo de otros llamado KGLX; de momento estoy optimizándolo y voy añadiendo las funcionalidades que me van haciendo falta en los engines 3D y el juego Neverball.

 

¿Para la GP2X no has hecho demasiada cosa, no? ¿Prefieres la GP32?

La GP32 la pille con más ganas, eso es cierto. La GP2X me parece una maquina fantástica pero ya hay mucha gente haciendo cosas para ella y a excepción de PSX4ALL no hay un proyecto que me llame realmente la atención.

 

Estos son tus emuladores para DreamCast. Explícanos algo sobre ellos.

emu

Neo4All

Es un proyecto para emular la consola NEOGEO-CDROM. Nació en un momento en el cual Fox estaba desarrollando un core de motorola 68000 para PC y Dreamcast, y a la vez se empezaba a intentar emular este sistema en la Dreamcast.

De forma original esta basado en el proyecto NeoCD y posteriormente se añadieron muchas cosas del GnGeo, pero está rehecho la gran parte del código: cores de las cpus, render de video, render de sonido, mapa de memoria, etc...

Particularmente nunca tuve este sistema en casa, aunque reconozco que he jugado a algunos de sus juegos en las salas recreativas. Fox sí que es un verdadero fan de este sistema.

El estado de este proyecto es de bastante madurez, en la Dreamcast funciona de maravilla, posiblemente el mejor emulador para Dreamcast, a excepción de Bleemcast. En GNU/Linux y Windows también funciona muy bien y hasta lo que yo sé, se ha portado para PSP con bastante éxito.

 

 AES4All

Se trata de una modificación (fork) de Neo4All para emular la consola NEOGEO de cartucho.

No creo que sea el mejor emulador de este sistema para GNU/Linux y Windows, pero para Dreamcast es capaz de cargar juegos que ocupan más que la capacidad de la RAM haciendo uso de la MMU (memoria virtual) aunque he de reconocer que para juegos realmente grandes se hace algo insufrible el continuo cambio de páginas de memoria al CDROM.



emuDCaSTaway

Fue mi primer proyecto de emulación para Dreamcast y uno de los que más cariño le tengo, tanto al propio emulador como a la máquina a emular.

Nació como un port de Castaway y parte de GPaSTaway, pero como siempre al final lo he cambiado casi todo.

Funciona realmente bien en Dreamcast, pero entiendo que hay otros emuladores mejores para GNU/Linux y Windows, como Hatari.

 

emuladorUAE4All

Se trata del proyecto que estoy más orgullo por la dificultad que supone emular un sistema tan complejo como el Amiga.

Partió como un simple port de UAE para Dreamcast que resultó muy lento, pero posteriormente tras trabajar muchísimo en el y cambiar hasta el core de la CPU por el FAME de Fox y mío, la cosa empezó a ir bastante bien.

Luego a la hora de jugar, es totalmente jugable en Dreamcast con sonido en la gran mayoría de los juegos aunque no va tan fluido como DCaSTaway y Neo4All.

Posteriormente ayudé a Critical para  realizar un port a GP2X y supongo que se habrá intentado portar a otros sistemas.

 

emuladoresSnes4All

Es un port de SNES9X principalmente para Dreamcast y adaptando partes de código de DreamSNES.

Se puede jugar en muchos casos, pero aún le queda mucho trabajo.

Fox y yo estamos pensando empezar de nuevo y hacer un port multiplataforma de ZSNES.

 

emuZX4All

Como ya he comentado mi primer ordenador y con el que aprendí a programar fue el ZX-Spectrum, por lo que le tengo un cariño muy especial.

Nació por la necesidad de tener un buen banco de pruebas para el core FAZE Z80 que desarrollamos Fox y yo.

Al proyecto en si, está bastante avanzado aunque le queda trabajo por hacer todavía. En Dreamcast funciona de maravilla y estoy pensando muchas cosas para él últimamente.

 

emuMAME4All

Trata realmente de la adaptación a Dreamcast, GNU/Linux y Windows del MAME/GP2X de Franxis.

Funciona muy bien aunque le queda pulir varios temas, además de sincronizar con las últimas versiones de Franxis. Como proyecto (el de Franxis realmente) es un proyecto sin fin: siempre hay algo nuevo que poner o mejorar.

 

emuPSX4All

Como ya he comentado creo que es el proyecto definitivo y probablemente final para mí. El objetivo principal es emular en el GP2X y en la Dreamcast una Playstation1.

En un principio, si no recuerdo mal, empezó el proyecto Zottd basándose en otros emuladores, luego nos unimos Unai y yo. Particularmente trabajé para que funcionase con SDL y adapte parte del código de la recopilación dinámica de la CPU de otro emulador.

Ahora mismo, hace tiempo que no le dedico mucho tiempo y las últimas versiones que he probado sigue siendo no jugable.

 

¿De todos estos, a cual le dedicas más tiempo?

Por lo general voy picoteando de uno a otro; ahora mismo NEO4ALL, AES4ALL, DCaSTaway y UAE4ALL los tengo parados ya que están muy maduros. Para SNES4ALL y PSX4ALL aun no he encontrado las fuerzas suficientes para afrontarlos de nuevo.

Así que, próximamente preveo trabajar en MAME4ALL y ZX4ALL.... además de un proyecto secreto (ahora mismo no puedo hablar de él) que estoy desarrollando con Fox.

Por lo demás, estoy más centrado últimamente en OpenGL y los engine3D.

 

¿Son emuladores propios o ports? ¿En qué emuladores están basados? Franxis nos comentaba que eran más que simples ports. ¿Qué cambios has añadido?

Siempre me he basado de forma original en otros emuladores; creo que es interesante partir del trabajo de otros para no reinventar la rueda. En muchos casos, algunos empezaron proyectos muy interesantes que al final se quedaron en nada o pudieron ser más de lo que fueron por dejadez o cansancio.

 

Que un emulador funcione en SDL, ¿Significa que tiene posibilidades de funcionar tanto en DreamCast como en GP32 (o GP2X)?

Esa es más o menos la idea, cualquier proyecto en SDL es fácilmente portable. Luego la GP32 solo soporta 320x240 como resolución, por ejemplo, si un proyecto usa 640x480 habría que cambiarlo.

 

¿Qué diferencias de potencia hay entre GP32, GP2X y DreamCast?

Pues son bastante diferentes en potencia, las diferencias son realmente muchas; en general la más modesta es la GP32 con solo 8MB de RAM y una CPU de bajo consumo que hay que overclockear  para alcanzar velocidades por encima de los 100MHz.

Luego la Dreamcast tiene el doble de memoria RAM que la GP32, además de 8MB de VRAM y 2MB de SRAM, luego la CPU de 200MHz muy apañada y una GPU bastante decente.

Por ultimo la GP2X lleva 64MB de RAM con una CPU doble de bajo consumo; en teoría se podría usar la segunda CPU como GPU.

 

El portar el SDL supongo que significa que un programador, sin tener la consola, puede programar para ella, siempre y cuando tenga en cuenta la potencia. ¿Cierto?

Si, siempre y cuando conozca las capacidades de la consola, como por ejemplo usar como resolución 320x240 que es la única soportada en la GP32.

Esto acelera muchísimo el desarrollo, porque hacer las pruebas en una consola y detectar errores suele ser bastante tedioso.

 

emuAparte de los emuladores, también has portado un juego para DreamCast. NOIZ2SA. Explícanos algo.

NOIZ2SA es un juego japonés bastante curioso. Realicé el port para GP32 y Dreamcast porque me llamaba bastante la atención.
Es lo que me gusta a mí en un juego: simple, de acción y muy adictivo.

 

Viendo tus emuladores, queda claro que tienes una Dreamcast. ¿Qué opinas sobre la historia de esta consola?

Opino que fue una pena la muerte comercial de una maquina tan buena para su época; pero no hay mal que por bien no venga: al estar muerta comercialmente se abrieron muchas puertas al desarrollo no-comercial, ya que Sega no intervino legalmente a los productos no licenciados.

El día que me compré la primera Dreamcast fue el día que la bajaron a 90€ y prácticamente la quemé jugando; tiene juegos realmente buenos.

Luego me fui dando cuenta que era una plataforma ideal para la emulación: ocupa poco, se enchufa a la TV fácilmente, para cargar un emulador solo hay que tostar un CD y tiene capacidad suficiente para emular prácticamente todo lo interesante.

 

Como hablábamos, al haber programado las librerías SDL para GP32 y DreamCast, los emuladores hechos o portados a este sistema, son fácilmente portables a cualquier sistema que tenga soporte SDL (Ej: Linux, Windows,…). ¿A qué otros sistemas han sido portados tus emuladores o juegos, y en qué ports has colaborado?

Solo he colaborado con el UAE4ALL para GP2X, el resto me he enterado muchas veces de casualidad, como el NEO4ALL para PSP y el NOIZ2SA para GP2X.

 

Aparte de todos tus emuladores, por si no fuera poco ¿Colaboras con algún otro proyecto?

Estoy colaborando con 3dfxdev.net para intentar sacar varios juegos comerciales para Dreamcast en los próximos años usando mi OpenGL y varios port de engines-3D.

Y finalmente, intento colaborar con Compiler Sofware y ComputerEmuzone para intentar hacer un CDROM (uno para cada grupo) donde contenga los desarrollos de cada uno y que pueda ser ejecuta en Dreamcast, GP2X, GNU/Linux, Windows, etc..

 

¿Cómo es un dia de trabajo de Chui (En lo referente a la programación)?

Cuando programo suelo hacerlo GNU/Linux para GNU/Linux, esto es, mis emuladores son multiplataforma por lo que el 99% del trabajo se prueba en el mismo PC con el que trabajo.

Mis herramientas de trabajo suelen ser el make y el vi; Franxis alucinaba las primeras veces que me veía trabajar, pero sólo se trata de deformación profesional.

Últimamente para ejecutar en la Dreamcast uso mi Treamcast por comodidad; se trata de una Dreamcast modificada que lleva un LCD incorporado como pantalla.

 

emuLa feria de RetroMadrid (antiguamente MadriSX&Retro), en su próxima edición va a contar con bastantes conocidos. ¿Estarás tú? ¿Alguna sorpresita?

Si. Mi última locura es prestarme como subdirector de la feria, además de ser un expositor más conjuntamente con  Fox y Franxis, con el nombre de EMUFORGE. Presentaremos novedades de emuladores, probaremos varios emuladores y charlaremos sobre ellos.

De momento se está preparando todo, pero no hay nada al 100% cerrado, aún queda tiempo.

 

¿Qué foros o páginas web sueles visitar?

No soy muy amigo de escribir en foros, aunque si suelo leerlos.

Principalmente sigo: dcemu.co.uk, dciberia.net, computeremuzone.com y elotrolado.net. Antes seguía más gp32spain y Talfi’s World

 

¿Haces caso a los mensajes de la gente cuando comentan problemas, sugerencias, etc…?

Al menos lo intento, claro. Supongo que alguno se me habrá quedado en el olvido.

 

¿Qué proyectos de futuro puedes contarnos, al lado de todo lo que hemos estado hablando?

Ahora mismo Fox, Franxis y yo pensamos aunar esfuerzos como emuforge.com y ser un expositor anual de RetroMadrid.

 

¿Qué sistema te gustaría ver emulado?

Pues realmente yo soy de los que piensa que se ha completado el círculo: Vamos que lo que hay emulado es lo que me interesa ver, pero eso si, hay mucho emulador pero poco de calidad real. Por tanto hay mucho por hacer: más multiplataforma, código abierto y con más opciones.

Para la Dreamcast y la GP2X se debe emular decentemente la PSX; creo que es el proyecto definitivo y final tras toda una buena ristra de ellos.

 

¿Cómo ves el tema de la emulación actualmente?

Pues veo que se esta centrando más en la maquina desde donde se emula que la propia maquina emulada. Quizás sea sólo una moda, pero creo que se debería centrar los proyectos en ser más multiplataforma y centrarse en mejorar la emulación propia, que en muchos casos deja mucho que desear.

 

¿En qué temas crees que se podría trabajar más?

En hacer proyectos libres de código abierto y multiplataforma.

Luego hay algunos problemas de exactitud, por lo general los proyectos se dejan cuando ya funcionan más o menos como se recordaba la maquina real; creo que hay que poner el emulador al lado de la maquina real para darse cuenta de muchas cosas.

 

¿Qué recomendarías a alguien que sepa programar, y que le gustara programar juegos?

Que use SDL o Fénix, se ahorrara tiempo y podrá ver sus proyectos en mas sistemas sin mucho esfuerzo.

Y que intente colaborar con todo el que le pueda echar una mano, así se animará más y no tendrá que hacerlo todo el solo.

 

Bueno, pues esto es todo. ¿Quieres añadir algo más?

¡¡¡Más!!! ¿¿¿Te parece poco??? :-D

 

Muchas gracias, felicidades por todo y hasta pronto.

De nada hombre, gracias a ti.