@spotUP
I solved the problem with the wsr player.
I just had the thought that it might be related to a union so I did a "grep -R union *" in the src dir and sure enough, there it was in "libwsr/nec/nec.c".
It seems there are 8 16-bit registers which are sometimes accessed as whole and sometimes only as high byte and low byte so all I had to do was change the order of the high and low byte indexes in libwsr/nec/nec.h if the target system is big endian like so:
#ifdef WORDS_BIGENDIAN
typedef enum { AH,AL,CH,CL,DH,DL,BH,BL,SPH,SPL,BPH,BPL,IXH,IXL,IYH,IYL } BREGS;
#else
typedef enum { AL,AH,CL,CH,DL,DH,BL,BH,SPL,SPH,BPL,BPH,IXL,IXH,IYL,IYH } BREGS;
#endif