I couldn't help but notice this:

Code:
for(int i=0; i<=Game->Counter[5]; i++)
Code:
if(Screen->ComboI[ComboAt(X, Y-(i*16))] == 6)
Because your loop starts at 0, your first pass will always look at the combo at X, Y for all four directions.

More interesting:

Code:
if(Screen->ComboS[ComboAt(X, Y+((i*16)-16))] == 0 && !Stop2)
Evaluating the math here...

i Y
0 Y + ((0) - 16) = Y - 16
1 Y + ((16) - 16) = Y
2 Y + ((32) - 16) = Y + 16
3 Y + ((48) - 16) = Y + 32
etc...

I understand you're testing for solid combos, but the math of these if statements have me a little confused which combo you're trying to check.

Perhaps your bug is testing the wrong combos due to bad ComboAt math?