ALWAYS SCAN FOR MATCHES FROM TOP TO BOTTOM. Anything else leads to moves that are lined up to be multiple simultaneous matches, only to find--"NOPE! Due to a bad scanning algorithm, the bottom matches pull the legs out from under the top, and those matches never get recorded, or only get recorded as a partial match of 2 when it was lined up to be 3."
Or at the very least, check for all matches that exist at a given time, and perform them _before actually shifting the grid down_ to occupy the removed spaces. The animation procedure that gets shown for multiple matches performed in a single step is extremely vague.
Other than that, the multiple game types all havetheir purpose, and the shrink from a 6x6 grid in the last version to 5x5 here makes even the "free play" game take a more reasonable amount of time.