open_agb_firm: Carga de juegos y homebrews de GBA de forma nativa y directa (versión ALPHA)

El desarrollador profi200 ha dado con una nueva e interesante manera de cargar nuestros backups (e incluso homebrews) de GBA de forma nativa (en formato .gba) en nuestras consolas de la familia 3DS (modificadas con SigHax), y sin necesidad alguna de metodos de inyección o de emuladores:

open_agb_firm

open_agb_firm is a bare metal app for running GBA homebrew/games using the 3DS builtin GBA hardware.

Aunque su salida es reciente y aún se encuentra en fase de desarrollo, ya se ha comprobado su funcionamiento, y promete mejorar:


Advertencias:
- Al ser carga de forma nativa, NO es posible (al menos de momento) el uso de guardado automático en tiempo real (savestates), aumento de frames/velocidad, ajuste de pantalla o sonido, y demás características propias de emuladores, pues NO ES EMULACIÓN [rtfm].
- Por el momento, no es compatible con archivos .gba de 64MB (megabytes) de tamaño o superior.
- Tampoco es compatible con juegos o modos de juego que requieren el uso de hardware interno (excepto el RTC) o de accesorios externos para GBA (como por ejemplo el GBA Link Cable).
- No es compatible con el guardado de tipo SRAM de 64kB (usadas más que todo por homebrews).
- Además, es posible que el guardado normal falle en algunos juegos (más que todo en los de tipo EEPROM). Incluso podría llegar a arruinar partidas (formato .sav) que se importen desde otras fuentes. Por lo que se sugiere tener copias de respaldo de dichas partidas.
- El modo "sleep" no está totalmente implementado, por lo que puede fallar o no servir aún.

Modo de uso:
1- Descarga el open_agb_firm del enlace puesto aquí (versión alpha)
2- Extrae el archivo open_agb_firm.firm (si quieres que aparezca el logo de GBA al iniciar) O el archivo open_agb_firm_no_bios.firm (si NO quieres que se muestre el logo de GBA al iniciar). Y si usas Luma CFW pon el archivo de tu elección dentro de la ubicación "luma/payloads" de la SD/microSD de tu consola.
3- Enciende la consola manteniendo presionado el botón START para invocar el menú chainloader de Luma.
4- Elije "open_agb_firm" u "open_agb_firm_no_bios" (dependiendo de lo que hayas hecho en el paso 2) de la lista de payloads.
5- Luego elije la ubicación de tus backups/homebrews de GBA (en formato .gba), elije el que vas a ejecutar y disfruta.
6- Para elegir otro juego/homebrew, tienes necesariamente (al menos por ahora) que apagar la consola (presionando el botón POWER) y repetir el proceso desde el paso 3.
Imagen

Fuentes:
- https://github.com/profi200/open_agb_firm (enlace oficial de GitHub)
- https://gbatemp.net/threads/open_agb_fi ... ad.570844/ (hilo de discusión de GBATemp, en inglés)

Saludos y a disfrutar [beer] [oki]
Gracias por la info estare atento a las novedades
@Mikirok Claro. Pero si quieres lo puedes ir probando a ver qué tal te parece.

Yo lo probé y me parece simplemente sensacional, más aún en mi caso que poseo una OLD. Ya no hay la necesidad de recurrir a la inyección e instalación de cada juego mediante cias, ni a cosas como GBARunner2, el intérprete de GBA en modo DS que viene incorporado en el TWLMenu++ (que aunque ha avanzado bastante, no es la manera más óptima de correr los juegos y presenta aún muchísimos problemas de compatibilidad).

Saludos
fmkid escribió:@Mikirok Claro. Pero si quieres lo puedes ir probando a ver qué tal te parece.

Yo lo probé y me parece simplemente sensacional, más aún en mi caso que poseo una OLD. Ya no hay la necesidad de recurrir a la inyección e instalación de cada juego mediante cias, ni a cosas como GBARunner2, el intérprete de GBA en modo DS que viene incorporado en el TWLMenu++ (que aunque ha avanzado bastante, no es la manera más óptima de correr los juegos y presenta aún muchísimos problemas de compatibilidad).

Saludos


Lo probare luego haber que tal va en mi old 3ds y si funciona bien dire adios a los juegos inyectados ya que los emuladores van muy mal en old 3ds
La versión test está bastante desfasada. Por aquí os dejo el commit c510a2e, que he compilado hace unos minutos.

https://gofile.io/d/U0famF

Lo he probado por encima y ahora mismo no creo que ofrezca nada mejor que la inyección. He visto más o menos el mismo rendimiento/compatibilidad. Además carece de la opción de forzar la resolución original (START+SELECT), forzando un filtrado bilinear a 240P, y no permite salir al menú, teniendo que apagar la consola.

Veremos cómo avanza en el futuro.
gelon escribió:La versión test está bastante desfasada. Por aquí os dejo el commit c510a2e, que he compilado hace unos minutos.

https://gofile.io/d/U0famF

Se agradece el aporte

Edit:
gelon escribió:Lo he probado por encima y ahora mismo no creo que ofrezca nada mejor que la inyección. He visto más o menos el mismo rendimiento/compatibilidad. Además carece de la opción de forzar la resolución original (START+SELECT), forzando un filtrado bilinear a 240P, y no permite salir al menú, teniendo que apagar la consola

Pues es claro que no va a ser mejor o distinto a la inyección en cuanto al tema de ejecución, pero sí que se evita el tedio de tener que ir inyectando e instalando juego por juego que se quiera usar, además de no tener que llenar el Menú HOME de juegos de forma innecesaria y así evitar alcanzar el límite de contenido instalado.

En cuanto a los filtros y demás opciones de pantalla viables en el modo nativo, como la del modo sleep o lo de no tener que apagar para cambiar de juego, esperemos que el asunto mejore con el paso del tiempo y que ojalá el desarrollador no abandone el proyecto (o que si lo hace, otros lo puedan retomar).

Saludos
El acceso a hardware es limitado. Veremos lo que depara el futuro. Desde luego me parece un proyecto muy interesante un firmware de GBA lo más sencillo posible.

PD: Lo de la limitación de los 64MB no sé muy bien a qué tipo de imágenes se refiere. Nunca se lanzó un cartucho en Game Boy Advance de más de 32MB, y la mayoría de 32MB son estos cartuchos de vídeo de Cartoon Network y similares. Imagino que se refiera a romhacks MUY tochos (¿quizá algún Pokémon?).

Edito: Al parecer hay unos pocos cartuchos de vídeo que usan bank-switching para ocupar algo más de 256Mbits.
Edito2: Buen timing he tenido, ya hay compilación oficial del último commit [+risas] https://github.com/profi200/open_agb_fi ... 2020-07-30
Como se que una rom es de mas de 64 mbit?
@Mikirok 64MB (megabytes), no Mbit (en Mbit equivaldríaa 8 veces más, es decir 512Mbit). Y pues como cualquier archivo, mirando sus propiedades. O si quieres algo más específico, hay aplicaciones que te pueden mostrar las propiedades exactas de un archivo .gba.

Pero igual como decía el compañero, en realidad no hay roms limpias de GBA que ocupen ese tamaño o mayor. Por lo visto, solo ciertos vídeos para GBA que se lanzaron lo ocupan. Por lo que poco o nada habría que preocuparse. Saludos

gelon escribió:Edito2: Buen timing he tenido, ya hay compilación oficial del último commit [+risas] https://github.com/profi200/open_agb_fi ... 2020-07-30

La intención es lo que cuenta XD. Nuevamente, gracias por el aviso. Saludos
fmkid escribió:@Mikirok 64MB (megabytes), no Mbit (en Mbit equivaldríaa 8 veces más, es decir 512Mbit). Y pues como cualquier archivo, mirando sus propiedades. O si quieres algo más específico, hay aplicaciones que te pueden mostrar las propiedades exactas de un archivo .gba.

Pero igual como decía el compañero, en realidad no hay roms limpias de GBA que ocupen ese tamaño o mayor. Por lo visto, solo ciertos vídeos para GBA que se lanzaron lo ocupan. Por lo que poco o nada habría que preocuparse. Saludos


Las roms pesan pocas MB asi que toca probar
Imagen

Para el que tenga curiosidad de cómo funciona.. un vídeo que pidieron en GBATemp.

PD: Sí, Taxi 3.. soy un apasionado de los juegos "3D" en Game Boy Advance, por muy truñales que sean.
Extrae el archivo open_agb_firm.firm (si quieres que aparezca el logo de GBA al iniciar) O el archivo open_agb_firm_no_bios.firm (si NO quieres que se muestre el logo de GBA al iniciar)

Hay alguna diferencia en eso? o es solo opcional que muestre o no el logo?
@Mikirok Solo en lo del logo... Ideal para los nostálgicos [qmparto]

Saludos
"Versión" 83f8a2d: https://femto.pw/2dn6.firm

Nueva compilación. Me imagino que sin bios, la verdad es no sé cómo compilarlo con o sin bios, no hay flags y en el código hay varios valores que hacen referencia a biosIntro. Lo miraré.

Los commits de hoy.

Better color conversion from 5 to 8 bit RGB. …
Enable sharp interpolated scaling matrix by default. Looks slightly better than AGB_FIRM.
Changed layout for GBA save type db.


Ahora el firmware tiene un escalado interpolado-enfocado, que se debería ver mejor que el que usa por defecto el firmware AGB (el de la Consola Virtual), que es un simple filtrado bilinear. Y también se ha aumentado el número de colores. Este commit también hace referencia a una función "softreset", que imagino que serviría para resetear al menú de selección, pero no estoy seguro.

Lo tercero es una base de datos para configurar automáticamente el tipo de guardado y solventar el gran problema de este firmware ahora mismo, no reconocer automáticamente el tipo de guardado en algunos juegos.
@gelon Se agradece nuevamente el aporte y las noticias al respecto del nuevo commit. Lo probaré en cuanto pueda a ver cómo va esta vez.

Saludos
He estado echando un ojo y la diferencia es mínima, pero ampliando mucho sí que corrige esos defectos de mezcla de color en objetos rectos.

Anterior y nuevo filtrado. Haced zoom.

Imagen

Imagen


Por cierto, algo que no sé cuándo lo cambio pero tuvo que ser en estos commits, es que la pantalla inferior muestra un texto -parece ser que permanente- de que se está leyendo la ROM y el tipo de guardado. Además, si pulsáis el botón Y (creo que era) te imprime la hora [+risas] Imagino que sean test para darle uso a la pantalla inferior. No sé muy bien cómo accede a ella vía hardware AGB pero un método raro tiene que ser ya que hace scroll horizontal en la capturadora de Katsukity (edito: Al parecer la pantalla tiene que hacer flickering para sincronizar la imagen de GBA y 3DS, lo cual se carga la captura).
gelon escribió:Por cierto, algo que no sé cuándo lo cambio pero tuvo que ser en estos commits, es que la pantalla inferior muestra un texto -parece ser que permanente- de que se está leyendo la ROM y el tipo de guardado. Además, si pulsáis el botón Y (creo que era) te imprime la hora [+risas] Imagino que sean test para darle uso a la pantalla inferior. No sé muy bien cómo accede a ella vía hardware AGB pero un método raro tiene que ser ya que hace scroll horizontal en la capturadora de Katsukity (edito: Al parecer la pantalla tiene que hacer flickering para sincronizar la imagen de GBA y 3DS, lo cual se carga la captura).

- Lo del texto que sale en la pantalla inferior, al igual que lo de la hora, de hecho lo había visto ya desde la primera complicación que había puesto antes de que saliera la oficial de GitHub (la que tú dijiste que era ya viejuna).

- Y sobre la capacidad de mostrar texto en la pantalla inferior como tal, sin saber mucho de métodos o trucos de programación involucrados en ello, supongo que es con base en la posibilidad que ya brindaba como tal el firmware original AGB para la 3DS y que el desarrollador ha logrado descubrir o copiar. Lo digo porque, si lo recuerdas, al ejecutar un juego de la CV de GBA (original o inyectado) se logra mostrar texto (en modo gráfico) en la pantalla inferior:
Imagen


Claro, es solo mi opinión al respecto. Saludos
Una pregunta los saves se guardan en la carpeta de las roms?
@Mikirok Si, al lado de los backups y con el mismo nombre, pero con extensión .sav.

Saludos
Commit e70f80d: https://femto.pw/qu4f.firm

Changed MCU init code to match the one from mcu module more closely.
More documentation for the color range adjustment and small cleanup.


Como siempre, sin bios, la verdad es que no he investigado cómo se modifica [+risas]

GitHub
https://github.com/profi200/open_agb_fi ... 3ca996aae1
Poco movimiento los últimos días:

  • Fixed MCU events (thanks to @SonoSooS).
  • Fixed 16 bit FIFO transfers in sdmmc.c (thanks @PoroCYon).

Build (No Bios)
gelon escribió:
Para el que tenga curiosidad de cómo funciona.. un vídeo que pidieron en GBATemp.

PD: Sí, Taxi 3.. soy un apasionado de los juegos "3D" en Game Boy Advance, por muy truñales que sean.

Tienes razón amigo, los juegos 3D de GBA son verdaderas inminencias del desarrollo de juegos y a mi me encantan, por ahora estoy buscando la manera de poder correr DOOM PC Total Conversion, que elimina la censura y agrega las texturas del Doom de PC a DOOM 1 y 2 de GBA, sin embargo, no logro echarlo a andar por el método de inyección, y la emulación de TWM++ no funciona, DOOM II por otra parte me funciona de maravilla.

Estaré al pendiente de como evoluciona este nuevo método que promete y más adelante cuando mejore la forma de cargar los backups lo probare. Lo de entrar al menú de luma o tener que hacer reboot para cambiar de titulo no me termina de convencer, claro es un alpha y seguramente lograran avanzar en su desarrollo, que la verdad apunta a ser la mejor manera de jugar los títulos de GBA en la 3DS.
La aplicación está bastante bien, pero los juegos se me ven oscurillos. ¿A alguien más le pasa?
22 respuestas