|
"Games that seem to go haywire when I load them (like I'm pressing start constantly...even though I havn't pressed any keys yet)"
see? those games are probably the ones that are expecting bit 6 to never be set. they'll read the joystick input and store each press to a separate byte, and check it by loading it and using BNE or BEQ. with your system, whether or not start is pressed, the game will always interpret it as pressed because it's checking to see if it's zero or not; if start isn't pressed, it'll wind up checking 0x40, which is not zero, so it assumes it's pressed.
I haven't read any documents that say so-and-so byte should *always* be set when reading $4016. I still think you should at least try returning 0x00/0x01 instead of 0x40/0x41. I'm willing to bet that'll solve a lot of your problems.
...just another vision... Studios
|