No, I do not think that is correct. I think if bit 0 and 1 are not set for $4201 it will activate the second set
You are probably having problems with the multitap because $4201 is for the joypads and you are zeroing out all of the bits. 2 bits are used for the controllers and the other 6 are not used for anything. There are 8 pins on the cpu for each bit for the joypad I/O ports $4201. The last 2 pins I think bit 7 and 8 are connected to the controls and the other 6 are not connected to anything on the motherboard. When you do your testing I think you need to have 128kb vram activated when you activate 256kb. So try only using those 2 bits/I/O ports.
Right, I think we're both trying to say the same thing here, in other words:
- If bit 0 is set, the mod is disabled (default on power on)
- If bit 0 is cleared and bit 1 is set, the first/lower 128kb is used
- If bits 0 and 1 are both cleared, the second/upper 128kb is used
This is what I'm currently emulating.
The problem is that if you're inverting bit 1 like this, games that write 0x80 or 0x00 to that I/O port (like Rushing Beat Shura and the dozens of other ones I listed, and probably more) will have problems if they were already loading stuff into the original 64kb of VRAM, since the entire 128kb will be swapped out when the game isn't expecting it to.
I think the best solution, rather than adding switches to the mod or anything, would be to just not invert pin 1 when connecting it to the highest address line on the RAM chips. As far as I can tell that would probably solve the issue, since writing zeroes to those bits like some games do would not actually change which block of VRAM is being used. (This would probably also not force people to have to patch games or anything - what if they want to play using their original cartridges?)
Is the vram viewer capable of displaying both 128kb sets of vram at the same time? If not, can you make it to where it does so I can run a few test?
Right now the VRAM viewer only displays whichever one is currently in use, but the generic memory viewer (hex editor) shows all of it at the same time. The VRAM viewer also shows the "full" VRAM addresses when using 256kb, i.e. if the second bank is selected it will show 0x20000-0x3FFFF as the addresses, etc.