Protofall / Crayon-Game-Framework

My own library for making games on the Dreamcast
BSD 3-Clause "New" or "Revised" License
5 stars 0 forks source link

Crayon: Incorrect rotation applied sometimes #213

Closed Protofall closed 4 years ago

Protofall commented 4 years ago

I noticed with multi_frame and multi_rotation, sometimes sprites were being rendered as rotation 0 instead of their actual rotation (This is for the simple renderer). Looking at the big if starting on line 474 with if(i == 0 || cropped || ( it appears when the rotation is the same as the previous, it won't enter and if the rotation is non-zero then it renders with rotation zero.

This is still partially speculation, but make a basic demo to confirm this.

Protofall commented 4 years ago

Yep. a sprite_array with length 4 and rotations 0 90 90 0 only renders the 2nd sprite as 90 and 1st, 3rd and 4th as 0.

Protofall commented 4 years ago

I put the old goto blocks in a set of if/else-if statements based on the pre-existing rotation_val variable. Didn't need to change the big if statement.

However I removed the crop check from it since it doesn't need to be there anymore. crop is reset every time UVs are fetched (In the if statement above).