Well, one can emulate EGHOLD by specyfing infinite time in D1 transition (and possibly D2 if it might jump due to DL). In any case, setting this bit to 1 did not prevent A->D1/D2 phase change.
On a side note: infinite time for ATTACK is not as useless as it would seem. First, it still works with loop link bit. Second, it does not start at zero volume in that case
SGC typically starts at 0x1ff, but in this case it stands still at 0x080. Why, thank you SEGA for pointing that out...
The way I handle ADPCM at loop jump now is as follows:
- type 2: decoder is reset to 0/127 (before the LSA sample is read)
- type 3: decoder keeps state, just the address changes.
Seems to work.
EDIT: 6 f**ing hours, not to mention all my previous attempts! I chopped both AO and my own code to pieces, even made a bastard DSF player using a memory dump supplied by AO. And all it took to fix Love Hina was "adres &= ~3;" in doubleword memory write function. Jeez. You'll excuse the noise as I'm going to bang my head against a wall for a while. Then I'll find me the guy who wrote ARM manual and shoot him. Repeatedly.