I am still waiting for my PowerPak flash cart to arrive. So I am unable to test my thoughts on real HW. But perhaps my idea is totally wrong and not possible in the first place.
At the moment I am rewriting my default game functions library I have for Z80 to 6502. One aspect is a routine to reduce the effect of the 9th sprite issue by rotating the sprite attribute table. I have been searching and reading but didn't find any exact information of the behaviour of the involved registers. But I was hoping to have found a low-cost OAM rotate routine.
My idea:
1- Use the OAMADDR register to set the offset to start writing. Each NMI the offset is increased with 5*4 bytes (5 sprites).
2- Use $4014 to copy the local OAM to the PPU OAM.
Will this work?
Is OAMADDR of influence of the DMA copy process?
Will OAMADDR wrap around to the start of the PPU OAM?
At the moment I am rewriting my default game functions library I have for Z80 to 6502. One aspect is a routine to reduce the effect of the 9th sprite issue by rotating the sprite attribute table. I have been searching and reading but didn't find any exact information of the behaviour of the involved registers. But I was hoping to have found a low-cost OAM rotate routine.
My idea:
1- Use the OAMADDR register to set the offset to start writing. Each NMI the offset is increased with 5*4 bytes (5 sprites).
2- Use $4014 to copy the local OAM to the PPU OAM.
Will this work?
Is OAMADDR of influence of the DMA copy process?
Will OAMADDR wrap around to the start of the PPU OAM?