J'avais trouvé tout seul une cause de problème avec -freg-relative-a5: utilisation des variables globales du programme dans un handler d'interruption.
Mais après cela, ta suggestion m'a aidé à:
* trouver la deuxième et a priori dernière cause de problème avec -freg-relative-a5, elle faisait toujours merder bien comme il faut à la sortie du programme;
* corriger le workaround que j'ai fait initialement (quatre lignes de programme fausses sur six, c'est bien

).
Bref, quand il me réécrira, il faut que je demande à Michael Hergenrader de te rajouter dans les credits
Le premier problème pouvait effectivement être dû à un ROM_CALL qui aurait utilisé a5 en interne, mais pas le deuxième, qui est dû partiellement ou totalement à un bout de code de TIGCCLIB. J'ai écrit à Kevin pour lui expliquer ce qui se passe, et pourquoi à mon avis, ce n'est pas correct.
Bon, fin de notre off-topic (suite en privé si tu le désires)
[EDIT: rajouté deux infos]