Pas besoin du Z80, il ne sert pas en mode GBA.
Comme ça à froid j'ai du mal à imaginer comment "insérer" dans du code natif l'émulation de composants réalisant des tâches en //. Il faudrait des timers (en imaginant qu'ils soient assez fins, je ne peux pas dire comme ça à quel point). Au moins avec un dynarec on peut faire des vérifs durant les sauts, où la main nous est redonnée...
Pour la gestion du LCD ça doit être possible de n'effectuer le rendu ("tout ce qui n'a pas été rendu jusqu'ici") qu'en fin de frame ou à la modification de certains registres (les rasters sont pas mal utilisés sur GBA; à voir), mais le code pour ça est plutôt lourd, même en laissant tomber les transformations affines (mais là encore, à voir). Evidemment laisser tomber le son, donc les fonctionnalités spéciales des DMA 1 & 2 et le 0 (auto-repeat, etc.) et les faire séquentiellement (le CPU est bloqué de tte), ça semble possible.
Reste que le CPU est vraiment plutôt lent, donc je ne sais pas trop. Comme proof of concept il pourrait être intéressant de voir comment c'est réalisable de faire fonctionner des jeux en mode bitmap, comme mon vieux
Balle qui n'utilise que le CPU et blitte direct en VRAM. En plus c'est un port d'un jeu TI, donc la boucle serait bouclée
Sinon il y aurait Doom pour les plus téméraires, mais je ne sais pas ce que ce dernier utilise comme autres fonctionnalités du HW.