Technoman64,
Just a small correction. You are right, TFLG1_C4F = 1, where TFLG1_C4F is a member of C bitfield, is or should generate
BSET TFLG1, #0x10 ; bit4 bitmask is 1<<4 = 0x10
Coumpiler also could not generate BSET, but something like this:
LDAB TFLG1
ORAB #0x10
STAB TFLG1
No matter, is it BSET or above 3 instructions, TFLG1_C4F=1 DOES CLEAR C4F and all other TFLG1 flags that are set at the moment CPU reads TFLG1 register. Bitfiels can't be used to clear timer (and many other peripherals) flags without sideeffects! Problem with bitfield is that when you want to change a bit, C carefully preserves all other bits. That's cool, but unfortunately not with timer flags, which are clearable by writing '1' to them.
I don't know what could be wrong with NE64 timer or with jeypi's code.
Regards