gPSP with retroarch isn't a bad option for GBA. The dynarec will crash, so you have to turn that off in the core options unfortunately. Even so, many games that are just shy of fullspeed in mGBA run smoothly in gPSP, so its another option.
You can also use GBARunner2 via Twilightmenu, which runs games fast (sometimes too fast, even), although they audio tends to be laggy or desynched. This also uses DSi mode so the scaling will be kind of funky unless you disable it by holding start. There's no save states either like a real emulator. Still, its a convenient way to play through roms that are too slow for the emulators.
Ultimately the VC injects for GBA are on a different level from other VCs, because they run the games "natively" more like backwards compatability than a full emulator. This means they run extremely accurately and have minimal input lag. It can just be a bit of pain individually injecting every rom and dumping/injecting saves, but it does offer the best results by a mile.