...no. LSA > LEA = all hell breaks loose. Well, it's maybe not that bad but it's pretty much undefined behaviour.
I think it's a bug. Could be ARM core (sigh) or a broken driver. 1) I see that happening on my code as well (still works though) 2) Even if a channel is started like this, it will be stopped moments later (as in less than a second, much less) 3) Quite frankly loop like this makes no sense
On hardware this setting is simply invalid. This is what happens on simple 400Hz test tone (44100 samples, 16-bit sine wave): 1) The loop goes fine once 2) There is a brief period of silence (1/4 a second give or take) 3) Squeaking starts :P
Hard to say why 3) sounds like it does, but since my program zeroes all AICA memory it could be the sine wave itself but played at much higher speed, along with the empty part of memory up to 0xffff (realative to SA). This is as good guess as any Anyway, once in this mode CA reports pretty much random values. Maybe because of how fast it goes. This is consistent with the fact that "loop jump" flag gets set shortly after it's read (and thus reset). But it does reset so the loop still works.
Note: CA does not fall within the 0xFFEC -> 0x(1)0008 range, it spans entire 0xffff range. My code will keep the loop going but will limit the range and will not change speed. I say it's invalid setting so I'm not keen on trying very hard to match hardware here...
EDIT: One more thing. GGX tune plays fine (?) both in my player and as AICA RAM dump on DC. This is most likely due to channels with invalid valued being promptly turned off, so not much sound is produced anyway. Or maybe a real ARM is not doing that to AICA. Anyway, it works.