@Chris
Instead of the library base pointer PPC functions get called with the interface pointer as their first parameter:
typedef BOOL (*xfdScanHookFunc)(struct xfdMasterIFace *, struct xfdScanHook *);
typedef BOOL (*xfdRecogBufferFunc)(struct xfdMasterIFace *, CONST_APTR, ULONG,
struct xfdRecogResult *);
typedef BOOL (*xfdDecrunchBufferFunc)(struct xfdMasterIFace *, struct xfdBufferInfo *);
typedef BOOL (*xfdRecogSegmentFunc)(struct xfdMasterIFace *, BPTR);
typedef BOOL (*xfdDecrunchSegmentFunc)(struct xfdMasterIFace *, struct xfdSegmentInfo *);
typedef BOOL (*xfdScanDataFunc)(struct xfdMasterIFace *, CONST_APTR, ULONG);
typedef ULONG (*xfdVerifyDataFunc)(struct xfdMasterIFace *, CONST_APTR, ULONG);
The xfdMasterBase structure now also contains pointers to opened IExec, IDOS and IUtility interfaces for convenience.
The last major thing is that the xfdForeMan structure variable should be called xfdForeMan and this symbol should not be stripped from the generated executable.