Yeah, we have talked over this with profi200, and he has a valid point that it's weird that there are two projects doing the same thing but differently. I'll definitely promote open_agb_firm in my thread because there are things which open_agb_firm already does, but mine never will, or the opposite.
First I'll list both the pros and cons of both projects:
- LgyBg AGB:
- Pros:
- Drag-and-drop replacement for AgbBg *[1]
- Includes all TWPatcher patches and scale kernels, and the ability to change between them in real time
- Allows you to save and quit (currently works only once without rebooting) or exit without saving
- Has a config menu while GBA mode is running
- Button remapping (not yet implemented)
- Has the same save compatibility as original AgbBg
- Cons
- Uses slightly more power than open_agb_firm because instead of using a fully custom optimized kernel, LgyBg still relies on LgyHorizon (ARM11) and LgyProcess9 (ARM9) which keep running in the background, and are bloated
- Relies on Luma's patches to LgyProcess9 to patch signature checks
- *[1] requires one-time additional patches to LgyHorizon (via TWPatcher) for LgyBg to work at all
- Requires additional patches to LgyProcess9 if we want to have more control over GBA mode
- No file explorer (relies on GBA injects)
- Can't save if SD has been ejected and re-inserted (requires Process9 patches to work around this, if even possible)
- open_agb_firm:
- Pros:
- Amazing graphics (seriously, try it out, it's much better than anything I could do with patches!)
- Has a file browser
- Saves savefiles directly to the SD
- Is a standalone FIRM *[1]
- Extremely low-latency graphics (although still not real-time, but there is just no workaround for this)
- Cons:
- Save type detection is spotty at times (community help is welcome to help fix that)
- Doesn't have a config menu (yet), so screen settings and brightness are fixed for now
- *[1] might not be possible to work as a drop-in replacement for AGB_FIRM because Luma could patch things it shouldn't
By the drivers I meant that instead of having to patch Nintendo shitty code, I can just edit the source code of my (shitty) code if I want to add more functionality
And yes, this means that I can easily add 800px mode without having to tear my hair out. Or I can add additional drivers which don't even exist at all in Nintendo's code, like CStick or gyro driver, and I can do whatever crazy stuff I want.
As for the other things you mentioned:
- yes, my code is a replacement for TwlBg and AgbBg, and it goes to the same place TWPatcher's patched files go, so you need GBA injects
- savefile management is possible if I patch LgyProcess9, but on stock LgyProcess9 it's only possible to save once without rebooting
- it's a hardware limitation that we can't use cheats and other hacky stuff, because there is a real GBA inside the 3DS, so no matter what we try, we can't (and so can't open_agb_firm even if it wanted), because once GBA is started, we're locked out, and the memory associated to the GBA is physically removed from the 3DS hardware until you reboot, so the only thing we can do is patch the ROM after load, but not after it has been started
- savefile management is not (yet?) possible in my code, but even then you can only save to one place. open_agb_firm could technically save as often as it wants to, provided that you don't choose save while the game is saving, because only one CPU can access the save hardware at a time
- and yes, I can do mode800 support with ease now