I'm going off of memory guys, so correct me if I'm wrong please, but aren't both these games reliant upon open bus behaviour, i.e. the
cmp/cpx/cpy (not sure which the games use, but probably
cmp) is against what might seem like a "non-logical" value? I could be wrong in remembering which games require this (do we have a list on the Wiki?), but it affects several. I also recall this being a struggle point with the very first NES emulators. Wiki reference with quote:
https://wiki.nesdev.com/w/index.php/Sta ... 17_read.29Code:
In the NES and Famicom, the top three (or five) bits are not driven, and so retain the bits of the previous byte on the bus. Usually this is the most significant byte of the address of the controller port—0x40. Certain games (such as Paperboy) rely on this behavior and require that reads from the controller ports return exactly $40 or $41 as appropriate.
I'm not saying this is the cause of problem -- it certainly could be one of many other things -- but it's something that has to be kept in mind.
That said -- and I say this with total respect, no negativity: while asking for help, and providing references to code is helpful and always appreciated, the thing you have to remember is this: most people aren't going to go sift through your entire emulator's code base to understand it just to help you fix a problem. Even linking to just some particular part of your code base (some function/line/file), while it makes sense to you, doesn't make sense to us without significant investment. For example, AFAIK, not many people here are familiar with Javascript (and I imagine even less so with Vue.js) -- we're more familiar with slightly less abstracted languages like 6502 assembly, C, C++, Python, Perl, etc.. We can explain to you how the NES works, but we often can't (without investing all that time) tell you exactly what's wrong with your emulator's emulation.
On occasion someone will do something like post a screenshot of a problem they're having with, say, emulating the attribute table or PPU stuff, and provide a screenshot of results along with a core piece of code logic (in a PL we're familiar with), and someone will go "that looks a lot like you might have X/Y/Z bits set wrong, or your calculation for X/Y/Z is wrong", and the author goes "OMG you're right! That fixed it!" and the problem is solved.
But this is generally quite rare. So please keep that in mind.