I've been looking into the differences between these two mappers, since all the documentation I've found seems to imply that VRC4 is just VRC2 with IRQs and 9-bit CHR register. But if that were really the extent of the differences, then one would think that replacing VRC2 with VRC4 on any given board would work. I've tested this myself, though, and it doesn't seem to be that easy.
To test, I simply took a working VRC4 from a Dracula-kun cart and placed it in a Dragon Scroll cart. The resulting setup doesn't boot into a usable state, so my first thought was that there was an error in the documentation; either there was some subtle difference in the pinout that nobody noticed, or there was some functional incompatibility.
Then I found this post, in which naruko mentions the need to initialize VRC4 due to its more advanced bankswitching:
viewtopic.php?f=28&t=11913#p134936
Since VRC2's bank setup is basically the same for every game, this initialization isn't necessary, and as a result, games don't boot as-is on VRC4.
So finally, my question: what sort of initialization is actually needed here? I've only just begun to dabble in 6502 assembly (and my last assembly class was well over a decade ago, so the rust is caked on thick), and I don't quite have my head wrapped around it. But Konami's hardware fascinates me, and I really want to understand it better. Thanks!
To test, I simply took a working VRC4 from a Dracula-kun cart and placed it in a Dragon Scroll cart. The resulting setup doesn't boot into a usable state, so my first thought was that there was an error in the documentation; either there was some subtle difference in the pinout that nobody noticed, or there was some functional incompatibility.
Then I found this post, in which naruko mentions the need to initialize VRC4 due to its more advanced bankswitching:
viewtopic.php?f=28&t=11913#p134936
Since VRC2's bank setup is basically the same for every game, this initialization isn't necessary, and as a result, games don't boot as-is on VRC4.
So finally, my question: what sort of initialization is actually needed here? I've only just begun to dabble in 6502 assembly (and my last assembly class was well over a decade ago, so the rust is caked on thick), and I don't quite have my head wrapped around it. But Konami's hardware fascinates me, and I really want to understand it better. Thanks!