I've been reading the upd7810 datasheet and yes, you're right, the NMI shouldn't get stopped by the iff (interrupt enable flip flop).

I did come across this while trying to understand the interrupt flags:

It looks like the INTOV flag is kept in the IRR but it gets set in the ITF.

grep INTOV src/devices/cpu/upd7810/ -r
src/devices/cpu/upd7810/upd7810_opcodes.cpp:	if (IRR & INTOV)
src/devices/cpu/upd7810/upd7810_opcodes.cpp:	IRR &= ~INTOV;
src/devices/cpu/upd7810/upd7810_opcodes.cpp:	if (0 == (IRR & INTOV))
src/devices/cpu/upd7810/upd7810_opcodes.cpp:	IRR &= ~INTOV;
src/devices/cpu/upd7810/upd7810.h:		INTOV   = 0x1000,
src/devices/cpu/upd7810/upd7810.cpp:					ITF |= INTOV;   /* set overflow flag if counter wrapped */