Source: https://magazine.odroid.com/es/issue/print?issue=201801
Timestamp: 2019-06-26 19:49:02+00:00

Document:
January 1, 2018By Adrian PopaLinux, Mecaniqueo
$ wget -O switch_reset.py
$ wget -O globals.py
$ wget -O dashboard.css
$ wget -O dashboardsmall.js
$ wget -O variables.yaml
January 1, 2018By Justin LeeODROID-C2
Hardkernel ha presentado ahora el módulo eMMC naranja, que utiliza el chipset eMMC 5.1 de Samsung, el cual se ha estado enviando desde octubre de 2017.
Figure 1 - Hardkernel now offers an orange eMMC module)
Funciona con las series C1/C2/XU4 y el sistema operativo adecuado. Las últimas imágenes oficiales del sistema operativo funcionan correctamente. Los esquemas están disponibles en eMMC PCB Rev 0.4. Compatibilidad del Módulo eMMC naranja con imágenes de sistema operativo de la serie XU4
Imagen SO
Información del Archivo de Imagen
Yocto project No Flashable file reference No Probado
Kali-Linux No Flashable file reference No Probado
Arch-Linux No Flashable file reference No Probado
ROS No Flashable file reference No Probado
RecalBox recalbox (17.11.10.2) ¿OK?
RetroPie No Flashable file reference No Probado
Los eMMC de Sandisk tiene una versión hasta la 5.1 con velocidad de transferencia de datos ligeramente más rápida a partir del 20 de julio de 2017. Tal y como se muestra en la Figura 2, el código QR está en el lado izquierdo del chipset ver. 5.1 mientras que el eMMC ver. 5.0 lo tiene en el lado derecho.
Figura 2 – El eMMC versión 5.0 (izquierda) tiene el código QR en el lado derecho, y eMMC versión 5.1 (derecha) tiene el código QR en el lado izquierdo
El Kernel versión 3.10 debería tener los siguientes parches aplicados para que funcione correctamente con la serie XU4: Github, Github, Github.
Figura 3 - Tabla de módulos eMMC de productos actuales en ejecución 2016
Figura 4 - Módulos eMMC de antiguos productos
Esquemas del módulo eMMC Revison 0.3 Esquemas del módulo eMMC amarillo revisión 0.4 Esquemas de la placa lectora eMMC
Dimensiones de la placa eMMC: 18.5mm x 13.5mm
Hueco entre las PCBs: 1.1mm (Altura de los conectores B2B ensamblados)
El conector está hecho por LS-Mtron Korea. En el módulo eMMC, se utilizó el GB042-34S-H10 (Socket-34pin). En la placa host, se utilizó el GB042-34P-H10 (clavija-34pin). Las especificaciones del conector están aquí Información sobre el eMMC Sandisk (iDisk Extreme) Información sobre el eMMC Samsung Información sobre el eMMC Essencore (el eMMC de 8GB se utiliza para XU4) Información sobre eMMC Toshiba
Pruebas de lectura/escritura del eMMC bajo el modo HS400 ODROID-C2 (Unidad: MByte/seg)
8G Escritura 45.4
8G Lectura 113
16G Escritura 80.1
16G Lectura 126
32G Escritura 124
32G Lectura 125
64G Escritura 124
64G Lectura 124
Comando de lectura/escritura para la pruebas de rendimiento del eMMC:
ODROID-C2 + Prueba de rendimiento del Emmc negro en condiciones de E/S de archivos
Versión Kernel : Linux odroid64 3.14.79-115
Herramienta para pruebas : iozone revision 3.429
Prueba de instalación y rendimiento de iozone:
El módulo eMMC negro está hecho con el chipset eMMC de Samsung. El módulo eMMC rojo y azul (normal) está hecho con chipset Sandisk o Toshiba o AIO. Los dispositivos ODROID-C1/C0/C1+/C2 funcionan con los módulos eMMC negro y rojo. Los dispositivos ODROID-XU4/XU3/U3/X2/U2 NO funcionan con el módulo eMMC negro.
Testeo del nuevo módulo eMMC de 8 GB en Ubuntu XU4
La nueva PCB roja eMMC de 8GB para el modelo ODROID-XU4 está basada en la tecnología eMMC 5.0 de Essencore/AIO. Velocidad secuencial con prueba "dd":
Escritura dd: 15.1 MB/s
Lectura dd: 104 MB/s
Prueba de velocidad de acceso aleatorio (IOPS) con bloque 4k.
Escritura aleatoria : io=993228KB, bw=9928.2KB/s, iops=2482
Lectura aleatoria : io=1479.1MB, bw=15149KB/s, iops=3787
Comparando el rendimiento del Módulo eMMC frente a la Tarjeta SD en el C2 con Android utilizando una PCB negra eMMC de 16 GB y una tarjeta SDHC UHS-1 de 16 GB (modelo OEM Sandisk SDSDQAD-016G UHS-I 50), con una imagen Android 5.1 V2.8 limpia y con el paquete GApps Pico instalado:
Tiempo de arranque del eMMC desde el encendido: 18 ~ 20 segundos
Tiempo de arranque de la SDHC desde el encendido: 32 ~ 35 segundos
Puntos de control para los desarrolladores de software de sistemas
No sobrescribas la partición de arranque oculta del eMMC. Si es así, visita cómo recuperar el cargador de arranque del eMMC para solucionarlo. El eMMC debería estar dividida de la siguiente forma:
Partición FAT16 con UUID 6E35-5356 (arranque)
Partición EXT4 con e139ce78-9841-40fe-8823-96a304a09859 (Linux)
Copia los contenidos de las particiones de la imagen de Ubuntu a las particiones de arranque y Linux usando "cp -afpv source destination", luego inserta el módulo eMMC y arranca como normalmente lo haces. Para comentarios, preguntas y sugerencias, visite la página wiki original en https://wiki.odroid.com/accessory/emmc/reference_chart.
January 1, 2018By Mike PartinDocker, Linux, Tutoriales
$ ./go-carbon -config-print-default | sed -E 's,(schemas-file =).*, "/data/graphite/go-carbon-schemas.conf",g' | sed -E 's,(data-dir =).*, "/data/graphite/whisper",' > ./conf-examples/go-carbon.conf
$ docker build -t go-carbon . &&
$ docker tag go-carbon swarm:5000/go-carbon-arm &&
$ docker tag go-carbon swarm:5000/carbon-cache-arm &&
$ curl https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana_${GRAFANA_VERSION}_amd64.deb > /tmp/grafana.deb &&
January 1, 2018By Bruno DoicheAndroid, Juegos
January 1, 2018By @goldpizza44Android, ODROID-C2, Tutoriales
He estado usando un ODROID-C2 con LibreELEC durante bastante tiempo, pero me sentía muy decepcionado por la falta de compatibilidad con Amazon Prime Video y Netflix. También he estado usando un teclado/ratón inalámbrico para controlarlo, lo cual me permitía censurar a su compañero, ya que deseaba tener único un mando a distancia de TV para controlar tanto el televisor (encendido/volumen) como el ODROID-C2.
Aquí tienes el procedimiento que seguí. Doy por hecho que sabes moverte por Android, a la hora de buscar aplicaciones y realizar configuraciones, necesitarás usar Linux a través de Android Terminal Emulator.
Este procedimiento no consiste en instalar sólo Kodi, sino también Youtube TV, Amazon Prime Video, Netflix y algunas aplicaciones de Canales específicas. También te ayudara a instalar aplicaciones desde Google Playstore. Aunque Netflix no se instalaría desde Playstore, se puede descargar el APK e instalarlo. La configuración del mando a distancia lleva algo más tiempo, ya que no logre encontrar un solo tutorial en línea que detallase todo el proceso. Esperemos que este artículo ayude a otros con este tema.
El primer paso es instalar Android en una tarjeta Flash. Android para C2 se puede descargar desde https://goo.gl/cuLqSU. Cuando escribí este artículo, la v3.5 era la última versión, y esa es lo que yo usé. Descarga la imagen, descomprímela e instálala en la tarjeta flash con Etcher, que está disponible para muchos sistemas operativos, o win32diskimager que se ejecuta en Microsoft Windows, o usa la utilidad dd de Linux. Puede encontrar más información en https://goo.gl/RPyiwr.
Instala la tarjeta flash en el ODROID-C2 que tengas conectado a un televisor a través de HDMI junto con un teclado/ratón USB y enciéndelo. Tarda unos minutos, pero al final acabarás teniendo un nuevo y brillante sistema Android, y el ratón debería permitirle navegar por el sistema.
El primer paso después de arrancar Android es ajustar el overscan en la pantalla. Observé en mi televisor que faltaban todos los bordes. No podía ver la barra de notificaciones en la parte superior y los botones de la parte inferior estaban cortados en su gran mayoría. Esto se soluciona fácilmente usando la aplicación "ODROID Utility". A través de esta utilidad puede ajustar la resolución (el "autodetect" por defecto también me funciono), utilicé las flechas para ajustar el overscan y apagué el LED azul, que parpadea y distrae. Tras ajustar la configuración con esta aplicación, debes hacer clic en "Apply and Reboot", lo cual reiniciará el sistema.
El siguiente paso es instalar Google Apps para tener disponible la tienda Google Play. Utilizando el navegador por defecto, el APK de Google Apps se puede descargar desde http://opengapps.org/. En esta página yo seleccioné lo siguiente:
Pico es la compilación mínima. También puedes intentar instalar nano y micro. Aunque no instalé el Calendario y otras aplicaciones en mi sistema, creo que funcionará.
Al pinchar en el botón de Descargar, se bajará un archivo ZIP a la carpeta de descargas. Este archivo ZIP debe tratarse como una actualización de Android y por lo tanto, se carga utilizando la misma aplicación Odroid Utility que se usó para actualizar Overscan y el LED azul. Ejecuta la aplicación Odroid Utility y haga clic en la esquina superior derecha (tres puntos). El menú que aparece tendrá la opción "Package install from storage" en el cual debes hacer clic. En la siguiente página, selecciona "File Manager" y navega hasta la carpeta de descargas donde debe seleccionar el archivo ZIP open_gapps. Se te pedirá que continúes, tras lo cual el odroid se reiniciará y se instalará Google Apps.
Una vez completada la instalación, puedes abrir la aplicación Google Play Store e instalar las siguientes aplicaciones:
Un cliente VPN (si quieres ... yo uso OpenVPN)
Aunque hay numerosas aplicaciones de video, no todas son aptas para TV. Instálalas una por una y pruébalas para asegurarse de que funcionan como esperas. Puedes desinstalar las aplicaciones que no funcionan correctamente.
Por defecto, la configuración de Android “Settings -> Security -> Untrusted Sources” está fijada en "Yes". Esto es necesario para instalar Netflix. Netflix era la única aplicación que no está disponible en Google Play Store. Sin embargo, Netflix tiene una página de ayuda con un enlace a su versión v4.16 del APK en https://goo.gl/22XXZi.
Descargué esta APK y la instalé con FileManager. Funciona bien con el mando a distancia. Hay versiones más recientes de la APK de Netflix disponibles en https://goo.gl/tkDbkz. Sin embargo, cuando las descargué, observé que no funcionaba muy bien con el mando a distancia. No tengo muy claro por qué.
La configuración de las aplicaciones es la misma en todas las plataformas. La instalación de mi Kodi se comunica con un back-end de MythTV en otro servidor que hace todas las grabaciones de LiveTV y administra mi colección de películas. Encontrar el complemento MythTV PVR fue todo un desafío en Krypton. Está en Addons-> My Addons, pero está desactivado.
Utilizo un ODROID-C2 TV con algunos televisores antiguos que heredé, cuyos mandos a distancia originales se perdieron hace mucho tiempo. Sin embargo, dispongo de algunos mandos a distancia Dish Network 3.0 IR PVR. Estos se pueden conseguir en Ebay por menos de10$. En mi opinión, estos son mandos a distancia bastante resistentes, su tacto es muy bueno y cuentas con suficientes botones para poder hacer lo que necesitas. También son "programables", ya que vienen con una lista de TVs y otros códigos de dispositivo permitiendo emular los mandos a distancia del otro fabricante.
Fue bastante fácil encontrar el código para controlar mi viejo televisor. Encender, subir volumen, bajar volumen y silenciar es todo lo que verdaderamente necesitaba. Deseaba que "Input select" funcionase para poder cambiar los puertos HDMI, pero nada de lo que probé hizo que ese botón funcionara. Afortunadamente, el ODROID-C2 es el único dispositivo de entrada que tengo, así que no es necesario cambiarlo. Si alguna vez coloco un segundo dispositivo HDMI, posiblemente será necesario volver a investigar hasta encontrar una solución viable.
El primer origen de mi frustración fue encontrar un código de dispositivo que activase todos los botones con el protocolo correcto. El ODROID-C2 utiliza el chip Amlogic S905 que contiene una interfaz para el receptor de infrarrojos. La instalación del sistema operativo Android de Hardkernel contiene el driver "amremote" integrado en el kernel (es decir, no se carga como un módulo). Por lo que el driver "amremote" solo reconoce el protocolo de infrarrojos NEC. Los códigos IR en otros protocolos (R5 / R6 o Sony) simplemente son ignorados por el driver "amremote". Si desea saber más sobre Consumer IR, visita https://goo.gl/WLgtv9.
Dotado con una lista de unos cuantos cientos de códigos, busqué un código de dispositivo de mando a distancia que enviara códigos NEC para todos los botones. Me llevé un chasco cuando descubrí que muchos dispositivos compatibles con el mando a distancia Dish Network solo enviaba códigos para un conjunto limitado de botones. Me costó bastante encontrar uno que enviase códigos para los 5 botones de navegación (arriba, abajo, izquierda, derecha y centro). Muchos códigos sólo facilitarían 3 opciones (arriba/abajo/centro o izquierda/derecha/centro), o 4 o 5 de las opciones. Finalmente encontré un reproductor de DVD Memorex (código 709) que ofrecía las 5 direcciones de navegación y todos los botones numéricos del mando a distancia. No permite enviar los códigos '*', '#', Volumen o Mute. Los códigos de Volumen y Mute son relegados al código de TV y por lo tanto, solo puedo controlar el Volumen de TV con los botones, no con el Volumen de Android.
Puesto que las "teclas numéricas" son en su gran mayoría inútiles para un TV (a excepción de los números de los canal), las reasigné en el remote.conf para realizar operaciones como son Home en Android, Subir volumen/Bajar volumen/Mute en Android y Avance Rápido/Volver atrás.
Para entender cómo una señal de IR entrante llega a la aplicación correctamente, debes tener en cuenta que hay 3 señales independientes involucradas:
el código IR enviado por el mando a distancia
el KEYCODE de Linux, y
el código ACTION de Android
El truco está en asignar el código IR entrante al código ACTION de Android correcto a través de un KEYCODE de Linux, y esta conversión se realiza mediante dos archivos independientes en Android:
En mi caso, ambos archivos requirieron tratamiento, aunque procure limitar los cambios a la distribución de las teclas. Para modificar estos archivos, utilicé la aplicación Android Terminal Emulator, que me proporciona un intérprete de comandos "bash" y el editor "vi". Si no sabe usar el editor "vi", puede copiar los archivos en /storage, usar la aplicación FileManager que está instalada y editarlos usando esta App, y luego copiar de nuevo a la ubicación /system. Más adelante me valgo de "vi" y de varios comandos de Linux para hacer este trabajo.
La primera tarea es cambiar el sistema de archivos de /sistem de ReadOnly a ReadWrite para que podamos actualizar los archivos. Abre la aplicación Android Terminal Emulator y escribe:
El primer comando (su -) te otorga privilegios de SuperUser. La primera vez que la uses aparecerá una ventana emergente que te pregunta si esta aplicación (Android Terminal Emulator) siempre debe tener este privilegio. Yo respondí "Yes" y la hice permanente. Se supone que todos los comandos que se ejecuten se cargarán con privilegios de SuperUser. Si abandonas Android Terminal Emulator y regresas de nuevo, es posible que necesite ejecutar nuevamente el comando "su -".
El segundo comando cambiará el sistema de archivos de /system de ReadOnly a ReadWrite. A continuación, debemos editar /system/etc/remote.conf para activar la depuración. La depuración nos permitirá determinar qué códigos estamos recibiendo. Cambia "debug_enable" de "0" a "1" con vi y actívalo con remotecfg:
Remotecfg lee el archivo remote.conf, el cual analizará los contenidos y luego enviará la información al software amremote en el kernel Linux. Esto normalmente se hace una vez en el arranque tal y como se especifica en /system/init.odroidc2.rc. Esto supone una gran ventaja, ya que podemos hacer cambios y luego activarlos de inmediato.
Con debug_enable fijado en "1", cualquier mando a distancia que envíe un protocolo NEC será detectado, y el software amremote registrará los errores en el registro log del sistema. Usaremos "dmesg" para ver el registro log del sistema. Prueba el cambio usando estos comandos:
Con el modo "while sleep" activado, al presionar un botón en el mando a distancia debería aparecer algo como esto:
Los últimos cuatro dígitos del número que aparece al final del mensaje de registro log nos dicen qué tipo de mando a distancia es este (0xff00 en mi caso). El remote.conf por defecto de Android Odroid busca el código 0x4db2. No estoy seguro de cuál es la probabilidad de que cuentes con un mando a distancia con ese código si no estás utilizando el mando a distancia disponible en HardKernel (https://goo.gl/yVLVLC). Si no tiene suerte, y el mando a distancia que estás utilizando transmite 0x4db2, entonces verá algo más en dmesg. Si no ves nada en dmesg, entonces es que no está usando un mando a distancia que transmite el protocolo NEC y debe buscar otro mando a distancia (o código de dispositivo).
En mi caso, aquí es donde empecé a buscar los códigos del dispositivo Dish Network 3.0 IR investigado el dispositivo adecuado. Configuré el código del dispositivo en el mando a distancia y presioné los botones para ver si obtenía las respuestas en dmesg. Probé muchos códigos hasta que estuve lo suficientemente cerca de mis necesidades con el código 709 de DVD Memorex, que transmite el tipo de mando a distancia 0xff00.
El extenso número HEX 0x7c83ff00 es en realidad 2 trozos de información. Descomponiéndolos en bytes: 7c 83 ff 00, deberías observar que los primeros 2 bytes son complementarios entre sí (es decir, 01111100 -> 10000011 - ceros y unos invertidos). De manera similar, los 3º / 4º bytes son complementarios en muchos casos (pero no en todos). La “verdadera” información está en los bytes 2 y 3/4 (0x83 es el botón, 0xff00 es el tipo de mando a distancia).
En remote.conf, ahora es el momento de configurar el tipo de mando a distancia que estás utilizando en remote.conf configurando la entrada para "factory_code" y reemplazando el XXXX con el código de 4 dígitos que aparece arriba (ajuste el mío en 0xff000001):
Tras introducir estos comandos, deberías presionar nuevamente los botones y ocurrirá una de estas dos cosas: ver un error que indique que el botón del mando a distancia no está asignado a nada, o ver información sobre la asignación del botón.
La primera sucede porque el botón 0xc5 no está en remote.cfg. La segunda ocurre cuando el botón se encuentra en remote.cfg. Si el mando a distancia que estás utilizando envía códigos similares a los del mando a distancia de Hardkernel, verás el segundo tipo de mensaje.
Aquí es donde empieza la diversión. Debes presionar cada botón y ver qué código envía, y tenerlo en cuenta. Luego debes averiguar qué quieres que haga y encontrar la acción Android en el archivo Vendor_0001_Product_0001.kl que corresponda a la acción que deseas que haga el botón. Finalmente, debes conseguir el KEYCODE de Linux desde Vendor_0001_Product_0001.kl que se usará para unirlo todo.
Estas son las acciones de ANDROID que he usado:
¡El último, "APP_SWITCH" no está en Vendor_0001_Product_0001.kl! Me llevó 2 horas solucionar el tema. Me apropié de una tecla (158, que anteriormente era BACK) actualizando Vendor_0001_Product_0001.kl con vi y cambiando "BACK" a "APP_SWITCH" en la línea correspondiente.
Ahora pégalo todo junto actualizando remote.conf en la sección key_begin/key_end y posiblemente en la sección repeat_key_begin/repeat_key_end. No suelo valerme de las repeticiones de teclas, de modo que mi sección repeat_key_begin/repeat_key_end está vacía. Tampoco suelo apoyar en la sección mouse_begin/mouse_end.
Mi archivo remote.conf resultante es así:
Ten en cuenta que también apagué "debug_enable" fijándolo en cero. Después de actualizar remote.conf nuevamente, escribe el siguiente comando:
Ahora es el momento de probar el mando a distancia. Deberías probarlo con cada aplicación, ya que ésta puede reaccionar de forma diferente a un código en particular o ignorarlo por completo. Todavía no estoy seguro de tener todos los botones configurados correctamente, pero el sistema es funcional y amigable.
Realicé una copia de seguridad de Vendor_0001_Product_0001.kl y remote.conf copiándolos en /storage/emulated/0/Download y me aseguré de que estuvieran guardados en el sistema de archivos /system. Si actualizas Android, es posible que necesites restaurar estos archivos o tu mando a distancia no funcionará. Espero que todo esto le sea útil al menos a una persona. Probablemente necesitare sacarlo a la luz en el futuro para recordar lo que hice en su momento. Para comentarios, preguntas y sugerencias, visita el post original del foro en https://goo.gl/6sc8GU.
January 1, 2018By @rokapetODROID-C2, Mecaniqueo
Serial.print("Ada
"); // Send "Magic Word" string to host
Instalé LibreElec en la tarjeta micro SD siguiendo las instrucciones de https://libreelec.tv, luego la monté el ODROID-C2 y configuré Kodi a mi gusto. Entre a Settings -> Services -> Control in Kodi interface, y habilité tanto “Allow remote control from applications on this system” como “Allow remote control from applications on other systems”. Instalé IDE Arduino en mi ordenador, luego extraje el archivo ZIP de la librería FastLed en una subcarpeta independiente bajo la carpeta libraries. Cuando inicié IDE Arduino después, la librería FastLED aparecía disponible en el menú Sketch -> Available libraries.
January 1, 2018By Justin LeeAndroid, Mecaniqueo
January 1, 2018By Justin LeeODROID-C2, Mecaniqueo
$ sudo fastboot flash dtb
January 1, 2018By Tobias SchaafJuegos, Linux
Uno de mis recuerdos más tiernos de la infancia es la serie de juegos Mech Warrior. Recuerdo pasar horas y horas a mediados y finales de la década de 1990 y principios de la década de 2000 jugando a todos los juegos de la serie que estaban disponibles en ese momento. Al jugar a este juego me viene a la memoria recuerdos de cómo controlaba el joystick y el teclado al mismo tiempo: configurando el Mech para optimizar mi arma, la refrigeración y la armadura a su máxima capacidad; y sentir el enorme contrabajo de fabricación propia, retumbando bajo mis pies cada vez que mi compañero apretaba el gatillo de su joystick.
Para los que no lo conozcan, Mech Warrior es un juego de simulación de combate sobre los llamados "Mechs", que son gigantes robot pilotados por un ser humano. Estos pilotos se llaman "Mech Warriors". Los "Mechs", también conocidos como Mechas, Gundams o Sentinels, son bastante comunes en la cultura japonesa. Aunque existe una gran cantidad de manga y anime en torno al tema, Mech Warrior es una producción occidental que no está basada en la cultura mecha japonesa.
Mech Warrior está basado en el universo/franquicia BattleTech de FASA Corporation. Los diferentes clanes y la llamada "Inner Sphere" luchan entre sí por conquistar territorios y el liderazgo. Aunque al final los clanes están destinados a fracasar, a menudo son los propios clanes los que deciden en los juegos. Mech Warrior 2 no es diferente. En este caso luchas como Clan Jade Falcon o Clan Wolf.
Figura 1 - Menú de Mech Warrior 2 - Juega con Clan Jade Falcon, Clan Wolf, o batallas simuladas
Mech Warrior 2 salió por primera vez para DOS, pero finalmente fue exportado a Windows 95, PlayStation y Sega Saturn. Puesto que fue relanzado un par de veces, hay muchas versiones y complementos disponibles. Se rumorea que hay hasta 38 versiones diferentes de Mech Warrior 2, el juego fue bastante popular y llego a impresionar bastante.
Lanzado en 1995, fue una obra maestra técnica para su tiempo, contenía videos de movimiento completo, gráficos 3D, resoluciones de hasta 1024 × 768 (más altas que la mayoría de los juegos disponibles por aquel entonces), una banda sonora CD y muchas más cosas que hoy por hoy son muy corrientes pero que en 1995 no lo eran tanto.
Figura 2 – Distintas variables de combate para Mech Warrior 2 con opciones de trucos incluidas
Por defecto, el juego tenía una resolución de 320 × 240, que era la más común para los juegos DOS de esa época. Aunque también admite resoluciones de 640×480 y 1024×768.
Figura 3 - Mech Warrior 2 con resolución de 320×240
Figura 4 - Mech Warrior 2 con resolución 1024×768
La diferencia es bastante notable, hace que el juego tenga un aspecto bastante decente incluso hoy en día.
La versión de software de DOS, a pesar de tener una resolución muy alta para la época, usaba solo unas cuantas texturas, lo cual hacía que el mundo se viera muy plano. Sin embargo, utilizaron una gran cantidad de graduaciones de colores para crear la atmósfera, incluso creandon un ciclo de noche y día con diferentes graduaciones de color.
También había una opción para activar "Chunky Explosions", lo cual significaba que cada vez que explotaba algo, se lanzaban al aire trozos de basura y de escombros, esto hacía que el juego pareciera más realista.
Figura 5 – Graduación del color en Mech Warrior 2
Figura 6 – Graduación del color en Mech Warrior 2
Figura 7 - Algunas explosiones con restos volando por todos partes
Obviamente, la mayoría de los detalles gráficos se aplicaban a los propios Mechs, lo cual no solo les hizo que se vieran bien, sino que también permitía que el jugador apuntara mejor a ciertos puntos del enemigo para paralizarlo. Por ejemplo, si disparabas a una pierna, podías inmovilizar al enemigo por completo. Disparar a un brazo despojaba al enemigo de sus principales armas. Si tienes suerte o tienes buena puntería, incluso puedes disparar a la cabina del Mech, matando al piloto sin infligir apenas daño al propio Mech.
Esto también significaba que tu propio Mech necesitaba ser manejado con mucho cuidado. Si perdías un brazo, y con él, la mayoría de tu armamento, podía ser casi imposible continuar la misión. También necesitabas gestionar la munición para tus armas. Si te quedabas sin munición, las armas no te servían para nada.
Si disponías de armas a base de energía que no requerían ningún tipo de munición, debías asegurarte de que tu Mech no se sobrecalentara, ya que las armas basadas en energía producían mucho calor cuando se disparaban. Para esto, disponías de módulos de disipador de calor que se supone que enfriaban tu Mech. Sin embargo, si algunas de tus partes habían sido destruidas en combate, podías perder los disipadores de calor y tu Mech se sobrecalentaría más rápido. También existía la posibilidad de recibir un disparo crítico que causara que la munición explotase, dañando tu Mech desde el interior.
El juego te permitía modificar tu Mech, limitado por las misiones, el peso, y algunas veces por el espacio del interior del propio Mech, ya que el almacenamiento de cada componente requería una cierta cantidad de espacio. La posibilidad de modificar tu Mech fue una de las principales razones que hizo que la serie Mech Warrior fuese tan popular por aquel entonces.
Cada jugador podía adaptar el mech a su propio estilo de juego, como escoger armas gigantescas donde con un único disparo obtenías resultados devastadores, pero eran más lentas, lo cual hacía más difícil disparar al enemigo; confiar en armas basadas en energía que no requerían munición y por lo tanto nunca se agotaban, pero generaban bastante más calor; o coger una tonelada de armas y un saco lleno de municiones, sin preocuparte por el calor y simplemente disparar mientras te quedara munición . Otras estrategias incluían el uso de misiles de largo alcance que podían derribar al enemigo incluso antes de que pudieras alcanzarlo, o misiles de corto alcance para disparar al enemigo a distancia cortas. Las posibilidades eran casi ilimitadas y flexibles para cualquier estilo de juego que eligieras, lo cual también hizo que estos y otros juegos fueran bastante interesantes en partidas multijugador y online, ya que cada jugador podía tener el mismo Mech con un manejo, armamento y velocidad de reacción totalmente diferentes.
Figura 8 - Personaliza tu propio Mech
Figura 9 - Asegúrate de que puedes colocarlo todo dentro de tu Mech
Las misiones variaban; a veces tenías que salir y destruir algunas instalaciones, o tenías que despejar puntos de Mechs enemigos; en otras ocasiones, se suponía que debías defender una base, una estructura o instalaciones, o ayudar a un compañero Mech Warrior en problemas.
Los controles de este juego pueden ser algo complicados, ya que tu personaje tiene la capacidad de caminar en una dirección y disparar y girar el torso en otra, lo que significa que podías controlar por dónde caminaba tu personaje y mira al mismo tiempo. También tenías que manejar tus armas, alternar entre ellas y dispararlas, todas de una vez o en grupos, controlar tu velocidad al caminar/correr y, si contabas con propulsores de salto, controlarlos también. También necesita manejar las diferentes vistas, la información del estado y ese tipo de cosas.
Mech Warrior es uno de esos viejos juegos de simulación, similar a Wing Commander, Comanche, Mig 29 o Silent Service, donde llegas a dominar realmente el juego cuando te haces con los controles. Poseer un buen joystick con bastantes botones programables ayuda mucho hoy en día.
La jugabilidad, los gráficos y la compleja simulación, todo ayudó para que convirtiera en un impresionante juego, Mech Warrior 2 también orece una memorable banda sonora CD, repleta de cosas buenas que la época tenía para ofrecer. El juego contaba con dos complementos oficiales, cada uno venía con sus propios CD con nuevos videos, nueva música, nuevos Mechs, nuevos mapas, etc. Los complementos eran juegos completos, no solo algunos extras que se instalaban, como es muy común con los DLC en la actualidad.
Figura 10 - Ghost Bear's Legacy es un complemento oficial para Mech Warrior 2, también disponible para DOS
Figura 11 - Mercenaries es un complemento oficial para Mech Warrior 2, también disponible para DOS
Mech Warrior 2 en ODROID
Como hay tantas versiones diferentes de Mech Warrior 2, existen diferentes formas de hacer que este juego funcione en ODROID. Decidí usar la versión de DOS que se ejecuta en DOSBox, puesto que tenemos una versión optimizada de DOSBox que también ofrece soporte 3D.
Para esto utilicé la siguiente configuración en ~/.dosbox/dosbox-SVN.conf:
Como puedes ver, tengo mi carpeta de juegos DOS en /home/odroid/DOS y mis imágenes de CD de Mech Warrior en /home/odroid/DOS/CDs/.
Como mi versión DOSBox está compilada con gl4es de @ptitSeb, que es un contenedor para OpenGL a OpenGL ES, podemos usar OpenGL para escalar la imagen a nuestra resolución de pantalla actual sin perder rendimiento. Eso permite que el video, que originalmente tiene un tamaño de 320×200, se escale bastante bien a 1080p. Incluso si juegas en 320×240 o 640×480, se sigue adaptando muy bien al tamaño de escritorio completo y se ve realmente bien. El juego se puede instalar fácilmente con el instalador del CD y debería funcionar de inmediato. En el caso de los complementos es algo más complicado
Mech Warrior 2 - Ghost Bear's Legacy requiere comprobar tu CD de Mech Warrior 2 antes de que se instale. Para hacer esto, tienes que montar ambos CD a la vez (todo en una línea), y hacer el cambio dentro del juego con CTRL + F4:
Esto me funcionó a mí, pude instalar y jugar el complemento Legacy de Ghost Bear sin problemas. Aunque Mech Warrior 2 y GBL funcionaron bien en 640 × 480 o 1024 × 768, el complemento Mercenaries sí que me iba un poco lento. También es verdad que tiene más opciones para el tema de los gráficos, así que supongo que el motor presenta algún tipo de actualización en este sentido.
Lamentablemente, el rendimiento general de Mech Warrior 2 no es lo que solía ser, o al menos es lo que yo recuerdo. Se ralentiza un poco. No mucho, pero lo notas. Aun así, puedes jugar y disfrutar completamente del juego (al menos Mech Warrior 2 y GBL) pero desearía que fuera un poco más rápido. El juego sigue siendo divertido y ya he matado no docenas, sino a cientos de Mechs enemigos hasta ahora. El juego también salió para Sega Saturn y Playstation, y aunque no logré que la versión de Sega Saturn funcionara totalmente, la versión de Playstation sí que funciona bastante bien
Figura 12 - La versión de Playstation de Mech Warrior 2 está reducida al mínimo, aunque está completamente texturizada
La versión de Playstation de Mech Warrior 2 está totalmente texturizada, aunque por lo general es una versión inferior en comparación con las versiones de DOS y Windows, porque se redujo al mínimo. Por ejemplo, toda la configuración de Mech ha desaparecido, dejando solo algunos ajustes preestablecidos. Los controles se simplificaron, pero esto realmente no mejoró la jugabilidad. Aunque los gráficos están totalmente texturizados, presentan una resolución bastante más baja, lo que hace que parezcan "feos" en comparación con la versión de DOS.
Mech Warrior 2 sigue siendo bastante divertido de jugar hoy día, y con ODROID es posible, incluso si la experiencia no es exactamente la misma que en su día. Desafortunadamente, no pude conseguir una copia de la versión DOS 3DFx del juego, quizás habrían mejorado los gráficos y el rendimiento algo más, ya que nuestro DOSBox también tiene soporte Glide (3DFx).
Hay muchas versiones diferentes y algunas pueden funcionar mejor que otras en ODROID. Puede que escriba un artículo comentario a éste para ver si el resto de versiones pueden ejecutarse en ODROID. Hasta entonces, seguiré destruyendo a otros Mechs usando el teclado y el ratón para controlar mi Mech ¡y brindar más honor a mi clan!
January 1, 2018By Rob RoyConociendo un ODROIDian
Soy un ingeniero de software embebido, he participado en muchos y diferentes proyectos comerciales desde 1994. Actualmente, estoy desarrollando el software para un dispositivo móvil que se ejecuta sobre un procesador ARM y trabaja principalmente con un driver de dispositivo o capa HAL/framework. Nací en Corea del Sur, estoy casado y tengo un hijo de 10 años. Desde diciembre de 2015, me encuentro vivido lejos de mi familia en Kitchener, Ontario, Canadá. Mi familia todavía vive en Corea del Sur, y los visito de vez en cuando. Fui a la universidad en Corea y tengo dos licenciaturas en informática y microelectrónica. Estudié microelectrónica tras algunos años de experiencia como ingeniero de software en el campo industrial.
Figura 1 - Paseo en bote sobre las Cataratas del Niágara
No tenía suficiente nota en el instituto como para ir a la universidad, así que decidí aprender programación a través de cursos de capacitación laboral que estaban disponibles en mi instituto para estudiantes de pre-grado. En realidad, quería aprender dibujo que era lo que más me gustaba en aquel momento, pero no estaba disponible entre los cursos que podía elegir. Cuando tenía 14 años, llegué a memorizar todo un libro de programación Apple//e BASIC, aunque nunca escribí una sola línea de código. Durante 6 meses, aprendí diferentes lenguajes de programación y probé un ordenador de escritorio compatible IBM XT y un IBM S360.
Como no me podía permitir el lujo de tener mi propio ordenador antes de conseguir un trabajo, me costó bastante encontrar un ordenador que me permitiera ejecutar mis programas en MS-DOS. También usé ordenadores para ayudar a muchos amigos a completar sus proyectos y tareas escolares. Mi lenguaje favorito era Pascal, el cual me permitió familiarizarme aún más con la arquitectura de programación, pero recurrí a C/C++ para un proyecto embebido en mi primera empresa en 1994, el cual ha sido mi principal lenguaje de programación hasta el momento.
Más tarde, me interesé más por el diseño de sistemas operativos y hardware, así que hice un curso de microelectrónica en otra universidad. Tuve un proyecto para diseñar el hardware de ordenador de 16 bits con NEC v25 y desarrollar un software para ejecutar una pantalla LCD y un teclado mono-color. No podía costear el desarrollo de una PCB personalizada para este proyecto, así que tuve que conectar todas las señales con cables de envoltorio durante 3 días y noches para conseguir el tan ansioso "¡Hello world!" en la salida serie. Este proyecto me animó a seguir aprendiendo más a cerca de la arquitectura de los ordenadores y los sistemas operativos. Todavía conservo esas placas originales, aunque les faltan muchos componentes, ya que tuve que usarlos para otro proyecto con posterioridad.
¿A quién admiras en el mundo de la tecnología? Admiro a Steve Wozniak. Muchas personas recuerdan a Steve Jobs, quien marcó un antes y un después en la industria TI. Creo que Steve Jobs solo pudo hacer realidad sus ideas porque conoció a Steve Wozniak, quien realmente hizo cosas y ayudó a extender las ideas de Steve Jobs. Siempre he deseado ser como él.
Figura 2 - Montando Apple Classic como carcasa para el ODROID con mi hijo
Figura 3 - Diseño de Apple Classic como carcasa para el ODROID
¿Qué te atrajo de la plataforma ODROID? Me interesa más resolver problemas que usar un hardware para un determinado propósito. Muchos de los miembros del equipo de Hardkernel han sido compañeros de trabajo en otra empresa antes de que se fundara Hardkernel. He ayudado al equipo de Hardkernel a resolver algunos problemas que experimenté en otros proyectos con el fin de implementar mis ideas en la plataforma ODROID. ODROID tiene más potencia de cálculo que otras placas SBC, y me gusta lo que el equipo de Hardkernel está haciendo en ODROID para sus usuarios. Espero que ODROID se vuelva más popular.
Figura 4 - Diseño de Cloud Shell
¿Cómo utilizas tus ODROID? Bueno, generalmente no uso mis ODROID más que para el desarrollo de código para ODROID. En contadas ocasiones he Intentado usar ODROID para otros proyectos a modo de prototipo o con una finalidad personal ya que, irónicamente, no soy un gran fan de usar un dispositivo electrónico para mi propio interés personal. Creo que los ODROID tienen grandes posibilidades de volverse más populares y de poder ayudar a mucha gente. Por lo tanto, normalmente ejecuto ODROID cuando encuentro un problema interesante en los foros ODROID o cuando algunas personas me piden ayuda personalmente o por correo electrónico.
Figura 5 - Ejecutando SNES sobre Apple Classic con el ODROID-C1
Has creado muchos proyectos de software útiles basados en la tecnología ODROID. ¿Qué te motivó a desarrollarlos? He desarrollado muchos parches para el Kernel Linux y HAL/framework de Android para ODROID. La mayoría de ellos están destinados a adaptar el kernel Linux o la plataforma Android BSP proporcionada por un proveedor de SoC. El resto es para ayudar a los usuarios ODROID a usar sus placas de un modo más cómodo, de esta forma las placas ODROID podrían llegar a ser más famosas y es bastante probable que los usuarios utilicen más las placas ODROID que otro tipo de placas SBC.
El dispositivo CloudShell para ODROID-XU4 es una demostración de cómo los ODROID funcionan como sistemas informáticos normales. He contribuido con muchos parches en los repositorios de GitHub ODROID y en mis propios repositorios para mejorar las características, aunque muchos de ellos están sin terminar o suspendidos. Estoy intentando hacer un parche y contribuir con la línea principal del kernel Linux o al repositorio de Hardkernel siempre que disponga de tiempo. Me satisface mucho ayudar a los usuarios ODROID a resolver sus problemas.
Figura 6 - El primer prototipo de CloudShell
El ODROID-X es mi favorito, ya que fue el primer dispositivo que me motivó para enviar un parche a la línea principal del kernel Linux. He enviado algunos parches para introducir el ODROID-X en el Kernel 2.6 de Linux, pasé mucho tiempo trabajando en él, así como ayudando al escritorio de Ubuntu a ejecutar el framebuffer de Linux en 2012. Creé y presenté el archivo de la placa ODROID escrito en C, al kernel Linux, pero la fusión fue denegada, ya que, en ese momento, la mayoría de los desarrolladores de ARM se movían en el árbol del dispositivo en lugar de un archivo de placa en C. Como resultado, tuve que invertir una gran cantidad de tiempo aprendiendo cosas nuevas, y finalmente mi archivo de árbol de dispositivo para el ODROID-X fue aceptado en 2013.
¿Qué innovaciones te gustaría ver en futuros productos Hardkernel? Me gustaría que los ODROID fuesen tan populares como la Raspberry Pi y que proporcionen más potencial de hardware en forma de hardware para pequeños dispositivos, y una versión un poco más grande para hardware de escritorio. Tal vez algún día, muy pronto, ODROID se convierta en el estándar para plataformas de escritorio basada en ARM para la denominada pequeña informática, pero seguiría siendo lo suficientemente barata para el uso corriente.
¿Qué pasatiempos e intereses tienes aparte de los ordenadores?.
Me gustó la fotografía, aunque ya no tengo tiempo debido a mi vida tan ajetreada
Me digo a mi mismo todos los días que debo escribir un código para que otra persona entienda mi idea con una mínima explicación. Solía decir esto a mí mismo y a los miembros de mi equipo, no alejándome demasiado de lo que realmente era necesario. La programación es simplemente una habilidad para trasladar una idea a un ordenador, y lo importante y difícil es encontrar la razón por la cual el código es necesario y por qué queremos hacer la tarea con un ordenador. Si la razón y el objetivo son obvios, las habilidades de programación se deducirán directamente.

References: resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución