Marry me. Now. :]
There's one thing that I always do: Writing all data for 1 bullet in a single line to save space.
ShotData{ id=1 rect=(649,122,665,136) render=ALPHA angular_velocity=0 delay_color= (255,0,0) }
Because a shot sheet with 255 bullets can make it hard to find what you're looking for.
Anyway, I'm not sure, but what does trim do? Give you extra space between the bullets?
After a painful experience of drawing my own a shot sheet, I learned that it's best to put at least 1 empty pixel between the bullets. Unless someone else can tell me a better way.