I'd suggest to add a romfile_loadfile_low()
I can definitely do that.
or add a 'struct zone_s' parameter instead of passing in a function pointer.
Sounds sensible. I see there's a malloc that takes zone as argument.
Also: What the trailing bytes are used for?
Only for re-implementing the existing loadfile function, to reduce copy-pasted code.