The Nintendo 3DS (and DSi too) contain a version of the ARM7TDMI CPU used in the Game Boy Advance [1]. On the 3DS, this chip was used for the Game Boy Advance Ambassador titles [2], which effectively run "natively" on the 3DS - when launching a game, the 3DS reboots into a different firmware and just runs the GBA game.
Later, homebrew was able to sideload GBA titles [3], which essentially has perfect software compatibility. However, emulating GBA titles still has advantages over rebooting the device so software emulators are available for the 3DS. The New 3DS is fast enough to provide pretty high quality GBA software emulation.
I don't think a similar path to directly use the DSi's ARM7 to boot GBA games was ever found by homebrewers (it may just be that the DSi is not able to reboot in a "different mode", which Nintendo did release for the 3DS?). The best available on the DSi seems to be a "compatibility layer" solution that tries to run the ARM7 code on the main ARM9 CPU [4], which seems to work surprisingly well.
> it may just be that the DSi is not able to reboot in a "different mode", which Nintendo did release for the 3DS?
From GBATEK:
"The memory regions and IRQ bits do still exist internally, but the DSi does basically behave as if there is no GBA cartridge inserted. Reading GBA ROM areas does return FFFFh halfwords instead of the usual open bus values though."
Since the memory map isn't flexible and GBA games expect to load data from the cartridge at the hardcoded area, games won't function on the ARM7. I assume the 3DS has special hardware to handle this properly.
Later, homebrew was able to sideload GBA titles [3], which essentially has perfect software compatibility. However, emulating GBA titles still has advantages over rebooting the device so software emulators are available for the 3DS. The New 3DS is fast enough to provide pretty high quality GBA software emulation.
I don't think a similar path to directly use the DSi's ARM7 to boot GBA games was ever found by homebrewers (it may just be that the DSi is not able to reboot in a "different mode", which Nintendo did release for the 3DS?). The best available on the DSi seems to be a "compatibility layer" solution that tries to run the ARM7 code on the main ARM9 CPU [4], which seems to work surprisingly well.
[1]: https://www.3dbrew.org/wiki/ARM7_Registers
[2]: https://nintendo.fandom.com/wiki/Nintendo_3DS_Ambassador_Pro...
[3]: through "Virtual Console injection" tools, or through https://github.com/profi200/open_agb_firm
[4]: https://emulation.gametechwiki.com/index.php/GBARunner3