TBH, the real problem was that I was silly... saw a nice big area of unused space and used it, which broke... well, Cave Editor certainly didn't like it.
The C interface code doesn't rely on the address of the calling code, so you just need to change the addresses around a bit.
How to change...