I'm down to 8 RAM variables to decipher and have 108 labels renamed1 with 214 to go. A couple interesting finds:
each player's paddle is only read every 4th frame. There's a couple subroutines, that I named SmoothXmotion and SmoothYmotion, that are used to smooth out the motion over the 4 frames between paddle readings. As a test I changed subroutine to NOP the smoothing and the motion was very jerky.
Paddle usage had me confused for a little bit:
- Paddle 2(INPT1) controls either the purple shield or the blue shield depending on the number of players.
- The Green Player uses Paddle 3(INPT2) - but is only human controlled during a 4 player game. Instead, paddle 4(INPT3) becomes active during a 3 player game.
1 labels generated by distella are of the format LMMMM where MMMM is the memory location of the ROM. Renamed labels are more human understandable - such as StartOfFrame instead of LF047.