UZEBOX, la consola retro totalmente abierta que te haces tu mismo

NOTA: TEXTO ORIGINAL DE DORAGASU DESDE LOS FOROS DE FASEBONUS

La UZEBOX es una consola de 8 bits totalmente minimalista, de hardware y software totalmente abierto y libre.

El diseño original de la consola fue creado por Alec Bourque, también conocido como UZE, pensando en hacerlo lo más sencillo posible. La consola (aparte de un par de reguladores de tensión) únicamente utiliza 2 chips: un microcontrolador de 8 bits ATMega644 y un conversor de vídeo RGB a vídeo compuesto y S-Video. Las características técnicas de esta consola son las siguientes:

http://www.youtube.com/watch?v=Da3OIHtX ... r_embedded

• CPU: ATMega644 (microcontrolador de 8 bits).
• Memoria RAM: 4 KiB.
• Memoria de programa (Flash): 64 KiB.
• Velocidad de reloj: 28,61818 MHz.
• Colores: 256 colores simultáneos en pantalla, en formato RGB 3:3:2.
• Resolución: Hasta 360x224 (según el modo de video utilizado).
• Sprites: Hasta 32 sprites simultáneos en pantalla.
• Sonido: 8 bit mono a 15 kHz, con 3 canales de tabla de ondas + 1 PCM o ruido.
• Almacenamiento: Soporte de tarjetas SD hasta 2 GB.
• Entrada:
◦ Soporta mandos de NES y SNES (según versión), incluyendo el ratón de SNES.
◦ Opcionalmente puede conectarse también un interfaz MIDI.

http://www.youtube.com/watch?v=lNG3ZHLo ... r_embedded

El diseño minimalista hace que el microcontrolador sea el encargado de todas las tareas necesarias para hacer funcionar los juegos: un núcleo software creado por UZE se encarga de generar gráficos y sonido, además de leer los mandos. A pesar de que un sólo chip lo tenga que hacer todo sin contar con otros chips especializados para el vídeo y sonido, el resultado es bastante impresionante: la consola es capaz de mover fácilmente juegos del estilo de los que uno puede encontrarse en ordenadores de 8 bits e incluso en la NES y Master System, permitiéndose incluso el lujo de mejorar el colorido en los casos en que los programadores se molestan en ello. Ports hechos por fans de Arkanoid, Donkey Kong y Tetris muestran lo bien que la consola se desenvuelve con estos juegos ochobiteros.

Por desgracia esta consola tiene una limitación importante: la cantidad de memoria. Con 4 KiB de RAM y 64 KiB de memoria de programa, no se pueden hacer juegos muy complejos. Una lástima porque si no fuera por esta limitación, el resto de características de la consola permitirían hacer juegos mucho más complejos, incluso asomarse a lo que podíamos ver en máquinas de 16 bits. Algunas demos técnicas mostrando esbozos de pantallas de Super Mario World o Sonic así lo dejan entrever, pero por problemas de memoria esas demos no se pueden convertir en juegos completos.

http://www.youtube.com/watch?v=t2pMxKWW ... r_embedded

Aún así esta pequeña cantidad de memoria da bastante de sí. Tenemos ports de juegos conocidos como Megatris (Tetris), Dr. Mario, Sokoban, Lode Runner, Frogger, Pac-Man, Lander (Lunar lander), Donkey Kong, Arkanoid, Boulder Dash, Chuckie Egg, etc. y otros originales. Además también tenemos un reproductor de música y otro de vídeo, si bien ambos requieren convertir previamente nuestros archivos a los formatos soportados por la consola.

Y aquí llega el que para mí es sin duda el punto fuerte de esta consola: el hecho de que sea hardware y software libre. Si sabemos programar en C y nos apetece entretenernos y colaborar con el proyecto, podemos programar nuestros propios juegos. Basta descargar el entorno de programación y código del núcleo de soporte de la consola (con licencia GPL v3) y ya podemos empezar a trastear con la máquina. Personalmente aún no he hecho nada de software para ella, pero tengo entendido que la programación sabiendo lenguaje C de antemano es muy sencilla. También hay disponible un emulador para ayudar en las tareas de programación.

Y quien sepa algo de hardware y tenga ganas de aventuras, también puede comprar los componentes y construir la consola por sí mismo, siguiendo el esquema publicado en la web. Incluso por qué no, también puedes hacerte una versión personalizada a tu gusto. Por ejemplo yo he hecho una versión aún más minimalista (a la que he bautizado como RGBUZEBOX), con salida únicamente por RGB y entrada de tensión de 5V, dejando así el diseño en un chip (en lugar de dos) más un regulador de tensión (en lugar de dos). Estos cambios junto con el uso de componentes de montaje superficial han servido para poder meter la consola en unas dimensiones muy reducidas. Las maravillas del software y hardware libre permiten desatar nuestra creatividad y darle usos en un principio inimaginables a este invento. ¡Incluso esta consola ha sido utilizada en alguna campaña publicitaria de Red Bull!
[url]
http://blog.makezine.com/archive/2011/0 ... -labs.html
[/url]

Imagen

Por mi parte, iré subiendo algún tuto de lo que hay que bajarse para compilar, ejemplos, etc.

Aquí os dejo una imagen de mi cutre port en progreso del oh mummy:

Imagen
Muy interesante! Como me gustaria aprender a programar algo en C ... Yo a los 15 años habia aprendido a programar en Básic en mi hermosa Spectrum 64k. Llegué a programar un juego multicarga de tres partes. Después de eso abandoné la programación hasta hace muy poco que la retome con Entidad 3D (se que no es programación, lo que se dice PROGRAMACIÓN... pero es muy similar) Hoy en dia me encuentro en un proyecto un tanto ambicioso que quién sabe cuando lo voy a finalizar je je je!
Algo asi es lo que estamos maquinando por aqui, pero algo mas "potente"; 16bits, GPU,..
hilo_creamos-una-consola-si-pero-con-los-pies-en-el-suelo_1612123
Ya, pero este está acabado y funcionando y el de EOL... bueno, a anteriores proyectos me remito [+risas] Y empezar por algo más potente en mi opinión no es lo más adecuado, es mejor ir paso a paso y un primer paso sería algo tipo uzebox.

BUENDANI, te recomiendo que pruebes esto tb, es muy fácil de programar, nada excesivamente espectacular pero ideal para aprender.
¡Gracias por darme propaganda pocket_lucho!

Por cierto, si alguien quiere un kit para montarse la suya tal y como aparece en la foto, incluyendo los componentes y la PCB, que me mande un privado, pero la verdad no es barato (serán unos 45€ gastos de envío incluidos) y aviso de que NO lo recomiendo a aquéllos que no hayáis soldado nunca componentes de montaje superficial como los que veis en la placa.

Porsupuesto si alguien decide montarse la suya con uno de mis kits, tampoco me hago responsable del funcionamiento de la tarjeta o los daños a la placa y alrededores: quemaduras sufridas por el soldador, TVs estropeadas, condensadores reventados, etc...

Por cierto, no conocía el otro proyecto de consola. Si queréis un consejo, hacedlo lo más sencillo de montar y programar que podáis. La Uzebox está ganando algo de publicidad gracias a eso. Se puede construir fácilmente utilizando componentes de inserción y parece ser que es sencilla de programar.
curioso aparato ¿tiene scene? eso es importante hacertela y poderla probar.
Que interesante, una pena el tema de la memoria tan limitada.
el modelo chiquitin no lo localizo por ningun lado ya montado o soldado , solo veo un modelo mas grande y encima desmontado... Alguna idea de donde encontrar el modelo pequeño y por cuanto sale mas o menos de pasta pillarlo ya montado...
hace tiempo que quiero montar una de estas
luego habia otra hydra que creo que se llamaba que tambien me tentaba
socram8888 está baneado por "incumplimiento términos y condiciones de uso"
txuko escribió:hace tiempo que quiero montar una de estas
luego habia otra hydra que creo que se llamaba que tambien me tentaba

Esa es una bestia parda XD

Sobre la limitación, es muy fácil de saltársela: http://www.atmel.com/dyn/products/produ ... rt_id=4331
100% compatible con el ATmega644, pero con el doble de Flash (128KB vs 64KB), cuatro veces la RAM (16KB vs 4KB) y doble de EEPROM (4KB vs 2KB). Y disponible en empaquetado PDIP compatible con el Atmega644. Así que ya sabéis si vais a montaros uno

PD: Puñetera web de Atmel, me ha tocado hacer la búsqueda paramétrica usando yo JavaScript xD
var rows = document.getElementsByClassName("table-tr-group-head");

for (var i = 0; i < rows.length; i++) {
   var device = rows[i].getElementsByTagName("td")[0].childNodes[0];
   var fsize = rows[i].getElementsByTagName("td")[1].childNodes[0];
   var speed = rows[i].getElementsByTagName("td")[3].childNodes[0];
   var packages = rows[i].getElementsByTagName("td")[50].childNodes[0];
   var pbpackages = rows[i].getElementsByTagName("td")[51].childNodes[0];
/*
   console.log(i);
   console.log("-" + device.innerHTML);
   console.log("-" + (packages.innerHTML.match("PDIP") || pbpackages.innerHTML.match("PDIP")));
   console.log("-" + (fsize.innerHTML >= 64));
   console.log("-" + (speed.innerHTML >= 28));
*/
   if (
      (packages.innerHTML.match("PDIP") || pbpackages.innerHTML.match("PDIP")) &&
      (fsize.innerHTML >= 64) &&
      (speed.innerHTML >= 20)
   ) {
      device.innerHTML = ">" + device.innerHTML + "<";
   };
   
};
Tengo entendido que ese modelo en concreto se llema muy mal con el overclock y por eso no puede sustituir al otro que trabaja sin problemas a 28 mhz, o eso creo [+risas]

Para preguntar por el pequeño, hablarlo con doragasu que yo soy pajarito XD
socram8888 escribió:
txuko escribió:hace tiempo que quiero montar una de estas
luego habia otra hydra que creo que se llamaba que tambien me tentaba

Esa es una bestia parda XD

Sobre la limitación, es muy fácil de saltársela: http://www.atmel.com/dyn/products/produ ... rt_id=4331
100% compatible con el ATmega644, pero con el doble de Flash (128KB vs 64KB), cuatro veces la RAM (16KB vs 4KB) y doble de EEPROM (4KB vs 2KB). Y disponible en empaquetado PDIP compatible con el Atmega644. Así que ya sabéis si vais a montaros uno

PD: Puñetera web de Atmel, me ha tocado hacer la búsqueda paramétrica usando yo JavaScript xD
var rows = document.getElementsByClassName("table-tr-group-head");

for (var i = 0; i < rows.length; i++) {
   var device = rows[i].getElementsByTagName("td")[0].childNodes[0];
   var fsize = rows[i].getElementsByTagName("td")[1].childNodes[0];
   var speed = rows[i].getElementsByTagName("td")[3].childNodes[0];
   var packages = rows[i].getElementsByTagName("td")[50].childNodes[0];
   var pbpackages = rows[i].getElementsByTagName("td")[51].childNodes[0];
/*
   console.log(i);
   console.log("-" + device.innerHTML);
   console.log("-" + (packages.innerHTML.match("PDIP") || pbpackages.innerHTML.match("PDIP")));
   console.log("-" + (fsize.innerHTML >= 64));
   console.log("-" + (speed.innerHTML >= 28));
*/
   if (
      (packages.innerHTML.match("PDIP") || pbpackages.innerHTML.match("PDIP")) &&
      (fsize.innerHTML >= 64) &&
      (speed.innerHTML >= 20)
   ) {
      device.innerHTML = ">" + device.innerHTML + "<";
   };
   
};

alguna recomendacion de hacer una u otra?
Muy interesante la consolilla esta, quizás hasta me anime a volver a programar si se puede hacer cosas muy elementales.

gracias pocket_lucho
socram8888 está baneado por "incumplimiento términos y condiciones de uso"
El Hydra por lo que veo vale un pastón: http://www.parallax.com/Store/Microcont ... fault.aspx Esa es la web oficial. El Propeller que gasta sólo vale 8$ y lo puedes comprar a parte en http://www.parallax.com/Store/Microcont ... fault.aspx
socram8888 escribió:El Hydra por lo que veo vale un pastón: http://www.parallax.com/Store/Microcont ... fault.aspx Esa es la web oficial. El Propeller que gasta sólo vale 8$ y lo puedes comprar a parte en http://www.parallax.com/Store/Microcont ... fault.aspx

mas o menos recordaba un precio similar, no habria problema por la pasta ya que seria un proyecto a largo plazo, ahorrar pequeñas cantidades mensuales para el y listo, tengo demasiadas cosas pendientes para priorizar algo asi jajaja.
¿y como puede subir tanto si apenas tiene más componentes que el hydra? Un poco carete lo veo... se ve potentillo.
socram8888 está baneado por "incumplimiento términos y condiciones de uso"
Hombre, lleva placa, el Propeller, teclado, ratón, mando y manual de programación

Y sí, es muy potente. El Propeller tiene 8 núcleos independientes entre sí, con un programa y memoria independiente, por lo que puedes dedicar un núcleo a video, otro al audio, otro a los mandos, etc...
Pues tiene muy buena pinta!!! Has subido un montón de vídeos youtube ... pero la web oficial??
Me parece muy intersante!!! He visto que existe el Fuzebox. Es una versión ya con los componentes y que venden para montar ensamblar tú mismo.

Lo malo que con lo que cuesta casi te compras una consola de nueva generación..
socram8888 escribió:
txuko escribió:hace tiempo que quiero montar una de estas
luego habia otra hydra que creo que se llamaba que tambien me tentaba

Esa es una bestia parda XD

Sobre la limitación, es muy fácil de saltársela: http://www.atmel.com/dyn/products/produ ... rt_id=4331
100% compatible con el ATmega644, pero con el doble de Flash (128KB vs 64KB), cuatro veces la RAM (16KB vs 4KB) y doble de EEPROM (4KB vs 2KB). Y disponible en empaquetado PDIP compatible con el Atmega644. Así que ya sabéis si vais a montaros uno

PD: Puñetera web de Atmel, me ha tocado hacer la búsqueda paramétrica usando yo JavaScript xD
var rows = document.getElementsByClassName("table-tr-group-head");

for (var i = 0; i < rows.length; i++) {
   var device = rows[i].getElementsByTagName("td")[0].childNodes[0];
   var fsize = rows[i].getElementsByTagName("td")[1].childNodes[0];
   var speed = rows[i].getElementsByTagName("td")[3].childNodes[0];
   var packages = rows[i].getElementsByTagName("td")[50].childNodes[0];
   var pbpackages = rows[i].getElementsByTagName("td")[51].childNodes[0];
/*
   console.log(i);
   console.log("-" + device.innerHTML);
   console.log("-" + (packages.innerHTML.match("PDIP") || pbpackages.innerHTML.match("PDIP")));
   console.log("-" + (fsize.innerHTML >= 64));
   console.log("-" + (speed.innerHTML >= 28));
*/
   if (
      (packages.innerHTML.match("PDIP") || pbpackages.innerHTML.match("PDIP")) &&
      (fsize.innerHTML >= 64) &&
      (speed.innerHTML >= 20)
   ) {
      device.innerHTML = ">" + device.innerHTML + "<";
   };
   
};


En los foros oficiales de UZEBOX se habló hace tiempo de hacer una actualización de la consola usando ese micro, pero al final se abandonó la idea porque hay algunos inconvenientes:
- Por lo visto el código no es 100% compatible, y habría que portar todo el kernel para este micro.
- Las instrucciones de salto por lo visto tardan 1 ciclo más en ejecutarse (con lo que la velocidad de ejecución de algunos juegos podría verse comprometida).
- El micro que se utiliza, en teoría funciona hasta 20 MHz, pero para esta consola se overclockea a 28 MHz. Parece que el ATMega644 no tiene problemas con esto, pero el 1284 parece que sí que ha dado problemas en algunas pruebas.

Por cierto, copio y pego una contestación de un privado acerca de los "kits" que vendo de esta consola:

Lo que vendo es la placa que se ve en el artículo colgado en el foro + los componentes necesarios para montarla. La placa NO es oficial, es diseñada por mí, a partir de los esquemas de la original, pero con algunos cambios, principalmente estos:

1.- Eliminación de la salida de S-Video y video compuesto (con lo que sólo tiene salida RGB por un conector DIN con el mismo formato que Megadrive/Master System/NeoGeo).
2.- Cambiada la tensión de alimentación de entrada a 5V (la original requiere tensiones mayores).
3.- Utilizados componentes de montaje superficial para reducir aún más el tamaño de la placa.

Aviso que la placa tiene 2 pequeños errores no muy importantes, que se pueden apreciar en la foto si te fijas bien: el primero es que en los conectores de SNES la huella no está bien hecha (si te fijas el pin central no casa bien en su sitio y he tenido que echar un montón de estaño para soldarlo). El segundo es que el pulsador de reset tiene un fallo también en la huella por lo que he tenido que cortar 2 de sus patillas. Por lo demás todo funciona 100%, y estos problemas son únicamente estéticos (no tienen relevancia una vez montada la placa).

El kit lo vendo sin soldar, más que nada por falta de tiempo, y porque al fin y al cabo los componentes los vendo a precio de coste (yo no me llevo dinero con esto). Como mucho si queréis puedo soldaros el microcontrolador y programarle el bootloader (ya que soy consciente de que poca gente tiene un programador para estos micros).

Tal vez podría vender las tarjetas montadas si hubiese una demanda importante (por ejemplo 20/25 placas como mínimo), porque en ese caso podría contratar a un montador para que lo hiciese por mí elevando el precio poco. Pero como dudo que esta demanda ocurra, en principio no contéis con ello.


Se me olvidó decir que también a los que lo quieran por un par de euros más les puedo dar una cajita en la que meterla, pero la caja la vendo SIN MECANIZAR, por lo que habría que hacer las ranuras cada uno como pueda (yo lo hice con lima y taladros) lo cuál entiendo que es un coñazo. En mi caso el resultado final fue este (perdón por la horrible calidad de la foto):

Imagen
MUAHAHAH

Habemus huellas!

Imagen

Van un poco a su bola pero más o menos van ;)

Tb he reducido las tumbas para que me entre el número exacto que tenía la version original aunque colocadas en vertical en vez de horizontal.

GRACIAS a ffantasy6, ya he encontrado un midi, preparaos para la tortura muhahaha

PD: Actualizo con más progresos, ya se desentierran las tumbas!

Imagen




Como imagino que nadie tiene (ni tendrá aunque esté muy chula) una uzebox intentaré portarlo a megadrive jejeje
21 respuestas