Homebrew OPEN_AGB_FIRM discussion thread

Pickle_Rick

I'm a pickle Morty!
OP
Member
Joined
Aug 28, 2017
Messages
694
Trophies
0
Age
27
Location
Garage
XP
1,469
Country
United States

open_agb_firm

open_agb_firm is a bare metal interface for natively running GBA games and homebrew using the 3DS's built-in GBA hardware.

open_agb_firm is also a complete and better alternative to GBA VC injects (AGB_FIRM), allowing for:

  • Launching GBA files directly from the SD card
  • Writing save files directly to the SD card
  • Automatic save type configuration using an included database
  • User configuration, such as gamma settings
  • Button remapping
  • Border support for 1:1 scaling mode
  • And more to come!

Disclaimer

open_agb_firm is currently in alpha. While open_agb_firm is relatively stable and safe to use, some quirks that have not been fixed. See Known Issues for more information.

Additionally, we are not responsible for any damage that may occur to your system as a direct or indirect result of you using open_agb_firm.

Patches

open_agb_firm supports automatically applying IPS and UPS patches. To use a patch, rename the patch file to match the ROM file name (without the extension).

  • If you wanted to apply an IPS patch to example.gba, rename the patch file to example.ips

Known Issues

This section is reserved for a listing of known issues. At present only this remains:

  • Sleep mode is not fully implemented.
  • Using SELECT+Y to dump screen output to a file can freeze the screen output sometimes.
  • Save type autodetection may still fail for certain games using EEPROM.
  • Lack of settings.
  • No cheats and other enhancements.
If you happen to stumble over another bug, please open an issue or contact profi200 via other platforms.

Hardware Limitations

open_agb_firm using the 3DS's built-in GBA hardware. Unfortunately, this comes with limitations compared to GBA emulators. This is a list of limitations we can't solve in software or are very hard to work around.

  • >32 MiB (>256 Mbit) games and homebrew.
  • Games with extra hardware built into the cartridge (except real-time clocks). Patches are required.
  • Proper save autodetection (can't find save type during gameplay).
  • GBA serial port (aka Link Cable).
  • >32 KiB (>256 Kbit) SRAM (homebrew games/emulators).
  • Reboots are required for switching between games.
  • No save states. Very difficult to implement because no direct hardware access.
  • Sound has lots of aliasing issues. No known workaround (hardware bug).

Link to official Github. (Official project by profi200) **LATEST BUILD IS 2023-10-6**

I made a little video xD

XpOhGk0.gif

Note: I did not make this software nor am I involved. This is just a discussion thread.
 
Last edited by Pickle_Rick,

Rj.MoG

Well-Known Member
Member
Joined
Jun 8, 2015
Messages
377
Trophies
0
Age
32
XP
1,479
Country
United States
open_agb_firm
open_agb_firm is a bare metal app for running GBA homebrew/games using the 3DS builtin GBA hardware.

Known issues
This section is reserved for a listing of known issues. At present only this remains:

  • Sleep mode is not fully implemented.
  • Save type detection may still fail for certain games using EEPROM.
  • No settings (including brightness control), no cheats and other enhancements.
If you happen to stumble over another bug, please open an issue in the official open_agb_firm repo on GitHub or contact me via other platforms.

Hardware limitations
This is a list of limitations we can't solve in software or are very hard to work around. This doesn't mean it will never happen (unless stated otherwise).

  • 64 MiB (512 mbit) games. Not possible to support.
  • Games with extra hardware built into the cartridge (except Real-Time Clock). Patches are required.
  • GBA Serial port (aka. Link Cable).
  • 64 KiB (512 kbit) SRAM (homebrew games/emulators). Not possible to support.
  • Can't switch back to 3DS mode from GBA mode requiring a reboot for booting a different game.
  • Savestates. Very difficult to implement because no direct hardware access.
You can access the github here.

A test build is available here. (It's pretty outdated now though. There's been a bunch of commits since.)


The color correction issue in the video has been fixed in a newer commit.

This is pretty amazing actually. I tried looking at this myself but my programming skills are limited to cobol, c# and fortran. I’m pretty blown away at this. It’ll definitely be convenient. Thank you!
 

Kwyjor

Well-Known Member
Member
Joined
May 23, 2018
Messages
4,295
Trophies
1
XP
4,436
Country
Canada
how to use?
Since it's a .firm file, I'm guessing you have to run it from the Luma chainloader, like gm9.

That raises an interesting question: do you think you can enable chainloading from ntrboot, so it can be run from a 3DS with stock firmware?
 

Nutez

Assimilator of Lumas
Member
Joined
Jan 2, 2018
Messages
175
Trophies
0
Location
The other side of paradise.
XP
1,813
Country
United Kingdom
Very cool, nice work!

Side note, there was a chainloader you could compile as .cia to reboot into a .firm payload from the home menu. It might be compatible with this .firm if someone had time to try it out ^_^ :
New link: https://github.com/Ordim3n/That-Shortcut-Thingy (old link was deprecated).

Edit: You can download a .cia/.3dsx shortcut from here.
 
Last edited by Nutez,
  • Like
Reactions: Isegrim and ber71

AmandaRose

Do what I do. Hold tight and pretend it’s a plan
Member
Joined
Aug 19, 2015
Messages
10,190
Trophies
1
Location
Glasgow
Website
www.rockstarnorth.com
XP
16,114
Country
United Kingdom
This is great can't wait to see just how good it gets. So far I have tried two games using the test build. Metal Slug GBA runs with no issues and Super Mario Bros Classic loads but no button presses are recognised.

Edit just tried Dr Mario and Puzzle League both work perfectly.
 
Last edited by AmandaRose,
  • Like
Reactions: Alexander1970

DualBladedKirito

The Black Swordsman
Member
Joined
Sep 9, 2015
Messages
222
Trophies
0
Age
32
Location
United States
XP
941
Country
United States
Nice to see this has a discussion thread now.( Was gonna make one myself but you beat me to it lol)

--------------------- MERGED ---------------------------

So, the obvious question is, will this offer any particular advantages over the standard agb_firm in the future?
Also it will eventually have a settings menu with cheats and the like. Also it has access to the arm9 AND arm11 cpus. Afaik stock agb_firm does not have access to the arm11
 
Last edited by DualBladedKirito,

AmandaRose

Do what I do. Hold tight and pretend it’s a plan
Member
Joined
Aug 19, 2015
Messages
10,190
Trophies
1
Location
Glasgow
Website
www.rockstarnorth.com
XP
16,114
Country
United Kingdom
You hadn't specified that anywhere in the first post. It seems as if you're just stealing credit from profil2000.
Yep the below in the OPs original post makes it sound like it was him who developed it.

If you happen to stumble over another bug, please open an issue in the official open_agb_firm repo on GitHub or contact me via other platforms.


The above needs removed and credit to the actual dev needs to be added to the first post.
 
Last edited by AmandaRose,

DSoryu

GBA/NDS Maniac
Member
Joined
May 5, 2010
Messages
2,355
Trophies
2
Location
In my house
XP
4,748
Country
Mexico
How to use:

NOTE: IF YOU WERE USING A DIFFERENT EMULATOR/LOADER BEFORE, IT IS MANDATORY TO MAKE A BACKUP OF ALL OF YOUR SAVES, THIS IS STILL AN ALPHA AND COULD BREAK PREVIOUS SAVE DATA, IT IS RECOMENDED TO TEST/USE IT WITH NEWLY CREATED SAVE FILES.

For Luma users:
  1. Place open_agb_firm.firm inside /luma/payloads folder on your SD card using the procedure of your preference, I recommend an ftp server as the file is very light to transfer.
  2. Place your GBA roms inside your SD card, it is recomended to create a folder named "GBA" for those but you can place them anywhere of your choice.
  3. Power off your 3DS, then power it on while holding the START button.
  4. A menu should appear and one of the available options should be "open_agb_firm", select it pressing the A button.
  5. You should be promted with a file browser, look up for your GBA files to load and see the magic.
  6. To load a different rom, you need to power off your 3DS, then repeat steps 3 to 5.
  7. As stated, any issue that happens should be opened on this project Github page.
For fastboot3DS users:

  1. Place your "open_agb_firm.firm" file inside of your SD card in any directory of your choice, if you use other payloads, is recomended to use the same directory.
  2. Power off your 3DS, then power it on while holding the HOME button.
  3. Fastboot 3DS should show up, select the "Boot Setup" option.
  4. Select any empty slot of your choice.
  5. Press the A button on the "Select [slot X] firm", a file browser will show up, then look up for your "open_agb_firm.firm" file on your SD card.
  6. [MANDATORY] Press the A button on the "Set [Slot X] keycombo" option.
  7. Follow the instructions on the top screen, then exit when done.
  8. Power off your 3DS, then power it on while holding the keycombo you configured in the previous step.
  9. You should be promted with a file browser, look up for your GBA files to load and see the magic.
  10. To load a different rom, repeat step 8.
  11. As stated, any issue that happens should be opened on this project Github page.

Also, is very important to know that profi200 is asking for help on this project:

profi200 said:
Some people probably noticed when i pushed this file. The idea is to make a database of save types for all GBA games ever released numbered using the no-intro.org database. Similar databases (script to convert) exist but there are a number of problems with them. They are not numbered using the no-intro db and i found several broken games testing only a hand full of them (mostly the less popular games).

The big question: Why?
Because all save type detection attempts so far didn't give satisfying results. The biggest problem are EEPROM games where i just can't properly detetct if 4k or 64k.

I surely won't go over the almost 3000 games alone so i want to make this a community effort.

Rules:

  • Your dump must be a known good dump verified using the linked release database.
  • If you own the original cartridge and it uses a flash save type please open it and identify the save chip used on that cartridge and mark the submitted entry as "verified". This is important to identify the proper flash manufacturer used in a cart.
  • If the first 3 of the 4 letters game code matches for all languages/regions, each entry is for all of them so the same game doesn't need to be included multiple times.
  • If you don't know the save type always start with the smallest size (without Real-Time Clock) and verify the game is saving properly and loading the savegame works. If the game freezes and it's a verified dump it probably means wrong save type.
  • If a game uses a special cartridge with extra hardware like Real-Time Clock mark the entry as such.
To make this easier i will probably make a build including a save type selector later.
This is subject to change.

So if you want to contribute the door is completely open :yaysp:
 
Last edited by DSoryu,

DSoryu

GBA/NDS Maniac
Member
Joined
May 5, 2010
Messages
2,355
Trophies
2
Location
In my house
XP
4,748
Country
Mexico
Impressive and awesome, but totally needs that patch to show the GBA boot logo B-)

Yep I don't know why but playing GBA games without seeing the boot logo just doesn't feel right :)

It is dissabled by default but you can re-enable it by editing the source code option, then rebuild the .firm as it is currently hardcoded. It is planned to be toggleable in the future accordig to previous coments on github.
 

KaduPSE

Revolution and cake
Member
Joined
Dec 26, 2015
Messages
260
Trophies
0
XP
408
Country
Brazil
Although not requiring CIA forwarders is a nice feature... Being compatible with them is certainly important if it ever becomes a true replacement for AGB_FIRM, part of the charm of using a 3DS is precisely having so many systems right in the native home menu.
 

Pickle_Rick

I'm a pickle Morty!
OP
Member
Joined
Aug 28, 2017
Messages
694
Trophies
0
Age
27
Location
Garage
XP
1,469
Country
United States
You hadn't specified that anywhere in the first post. It seems as if you're just stealing credit from profil2000.
Yep the below in the OPs original post makes it sound like it was him who developed it.

If you happen to stumble over another bug, please open an issue in the official open_agb_firm repo on GitHub or contact me via other platforms.


The above needs removed and credit to the actual dev needs to be added to the first post.
I just copy and pasted the text from his github.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Psionic Roshambo @ Psionic Roshambo: Yeah and my use case is fairly light so even if they are 50% used up that other 50% will last me...