.
Вообще-то тебе и пишу, что тут не полный BASIC, а его ограниченная вариация BEX, где такое выражение НЕ работает, т.к. изначально не запланировано.
Писать то ты пишешь, но видимо не думая, потому что, то что ты обозвал моим "забагованным кодом" (тот что с Print'ами) как раз работает (нет, погоди, еще раз для закрепления, специально для тебя -
"такие неправильные алгоритмы как" "Print SpritePosX(character_top)>128" -
РАБОТАЮТ! даже в этом
"не полном BASIC, его ограниченной вариация BEX", так понятно?
), как и должно, а почему они не могут не работать я и разъяснил выше, просто ты не догоняешь и пишешь ахинею.
А не работают(а точнее неправильно работают) сложные логические выражения (в данном случае логическое умножение со сравнением, в которых используется SpritePosX, остальное не проверял) вида (SpritePosX(a)>100) And (SpritePosY(b)>100), которое при выражениях (SpritePosX(a)>100) равному логической 1 и и при (SpritePosY(b)>100) равнму логической 1, возвращает логическое 0. Т.е итоговое логическое выражение "1 And 1" равно 0, вместо 1 (это для упрощения показано, в таком виде оно как раз работает).
Какой бы этот бэйсик не был урезанный, такие "сложные" выражения должны работать, либо компилятор должен выдавать ошибку синтаксиса не позволяя использовать в сложных выражениях SpritePos, если он этого не умеет, и в документации должно быть описано, но этого нет, поэтому вызывает недоумение пользователей.
Да и вообще, сдались вам эти недобэйсики, выбросите их нафиг, есть нормальный си, нормальный SGDK, пиши - не хочу, нет же, надо этот кал колупать, что называется - "ежики плакали, кололись, но продолжали жрать кактус"