I peeked into arm7core.c but this coding style is so incompatible with me. I tried to look for several problematic cases I had problems with, alas those seem to be taken care of properly.
I do have few suggestions: - As far as I know TST-class (TST,TEQ,CMP,CMN) instructions never write to Rd, so HandleALU doesn't need to have "else" clause for that. Doesn't matter if Rd is being coded as PC in that case. - I'm not 100% convinced that the immediate operand shift (I bit = 1) produces new carry value as output. Modify line 1241 to be "sc = GET_CPSR & C_MASK;" and see what happens. This is how I have it, seems to work?