(I quoted myself because this is the first comment on a new page of comments, and I want to keep the context of the conversation in place).It seems the neslib based source code on my webpage omits this bit
lda #$40
sta $4017
from crt0.s
I believe I borrowed this crt0 from the Alter Ego source code.
$4017 is the APU frame counter. Writing #$40 here disables frame count IRQs. Please add this somewhere near the top of crt0.s. Sorry for the inconvenience.
Once I edited that line in...it works in most emulators. It doesn't work in Nintendulator.
I think the reason is because you put the reset code at $8458 in the swappable bank. reset code should be at $e000-ffff in the fixed bank. And your reset code should explicitly put the correct banks in place before you use them.
I think, if you did those 2 fixes, it would would in nearly all emulators.