Starting at address 0x00115BE4, there is an array containing stats of each ball. Add some multiple of 0xAC to get whatever ball you want to look at. I believe there is 100 of them.
A list of offsets. Each piece of data takes up 2 or 4 bytes, as noted by the ,2u or ,4u after the offset. The u being unsigned, s being signed, and ? being either signed or unsigned (
I haven't rightly identified which). x is used when it is best viewed in hexadecimal form
00115BE4 [size=0xAC][count=100] Ball array
+00,2x Does ball exist? Some sort of identifier?
+02,2x Bit-packed:
0x0001 - Allowed to hit paddle? 0 = No (still going up from paddle hit) 1 = Yes
0x0004 - Released from paddle? 0 = Stuck to paddle 1 = Flying free
+04,2? Ball power-up (giant, fire)
+06,2s Angle (precise to 4096)
+08,2? Fire ball related.
+0A,2s Is it fire ball? -1 = No 0 = Yes
+0C,2? Giant ball related.
+0E
+10,4? X-pos
+14,4? Y-pos
+18
+1A
+1C
+1E
+20,2s Angle (2)
+22,2u Speed
+24,4? X-pos (2)
+28,4? Y-pos (2)
+2C,4s X-vel
+30,4s Y-vel
+34,2s Angle (3)
+36,2u Speed (2)
+38,4? X-pos (3)
+3C,4? Y-pos (3)
+40
+42
+44
+46
+48,4? X-pos (4, halfstep?)
+4C,4? Y-pos (4, halfstep?)
+50,4u X-vel, absolute value?
+54,4u Y-vel, absolute value?
+58
+5A
+5C
+5E
+60
+62
+64
+66
+68
+6A
+6C
+6E
+70
+72
+74,2u X-pixel
+76,2u Y-pixel
+78,2u X-pixel: Trail1
+7A,2u Y-pixel: Trail1
+7C,2u X-pixel: Trail2
+7E,2u Y-pixel: Trail2
+80,2u X-pixel: Trail3
+82,2u Y-pixel: Trail3
+84,2u X-pixel: Trail4
+86,2u Y-pixel: Trail4
+88,2u X-pixel: Trail5
+8A,2u Y-pixel: Trail5
+8C,2u X-pixel: Trail6
+8E,2u Y-pixel: Trail6
+90,2u X-pixel: Trail7
+92,2u Y-pixel: Trail7
+94,2u X-pixel: Trail8
+96,2u Y-pixel: Trail8
+98,2u Speed (used only for sticky ball or pre-launch)
+9A,2s Angle (used only for sticky ball or pre-launch)
+9C,2u Timer for sticky ball (or pre-launch)
+9E,2s Countdown timer?
+A0,2? Related to ball speed? Incremented by timer at +9E
+A2,2x Which wall was last hit?
+A4
+A6
+A8
+AA